我有一个我从锚点调用的动作,即Site/Controller/Action/ID ,其中IDint

稍后我需要从Controller重定向到同一个Action。

有一个聪明的方法来做到这一点? 目前我在tempdata中存储了ID ,但是当你回到f5后再次刷新页面时,tempdata就消失了,页面崩溃了。


#1楼

您可以将id作为RedirectToAction()方法的routeValues参数的一部分传递。

return RedirectToAction("Action", new { id = 99 });

这将导致重定向到Site / Controller / Action / 99。 不需要临时或任何类型的视图数据。


#2楼

从我的研究来看, Kurt的答案应该是正确的,但是当我尝试它时,我必须这样做才能让它真正为我工作:

return RedirectToAction( "Main", new RouteValueDictionary( new { controller = controllerName, action = "Main", Id = Id } ) );

如果我没有在RouteValueDictionary指定控制器和操作,则它不起作用。

同样在这样编码时,第一个参数(Action)似乎被忽略了。 因此,如果您只是在Dict中指定控制器,并期望第一个参数指定Action,它也不起作用。

如果你以后再来,先试试Kurt的答案,如果你还有问题,试试这个。


#3楼

....

int parameter = Convert.ToInt32(Session["Id"].ToString());

....

return RedirectToAction("ActionName", new { Id = parameter });

#4楼

我也有这个问题,如果你在同一个控制器内,这是一个很好的方法是使用命名参数:

return RedirectToAction(actionName: "Action", routeValues: new { id = 99 });

#5楼

MVC 4示例......

请注意,您并不总是必须传递名为ID的参数

var message = model.UserName + " - thanks for taking yourtime to register on our glorious site. ";
return RedirectToAction("ThankYou", "Account", new { whatever = message });

和,

public ActionResult ThankYou(string whatever) {ViewBag.message = whatever;return View();
}

当然,您可以将字符串分配给模型字段,而不是使用ViewBag(如果这是您的首选项)。


#6楼

如果您的参数碰巧是一个复杂的对象, 这就解决了这个问题 。 关键是RouteValueDictionary构造函数。

return RedirectToAction("Action", new RouteValueDictionary(Model))

如果你碰巧有收藏品,这会让它变得有点棘手, 但另一个答案很好地涵盖了它 。


#7楼

带参数的RedirectToAction

return RedirectToAction("Action","controller", new {@id=id});

#8楼

如果您需要重定向到控制器外部的操作,这将起作用。

return RedirectToAction("ACTION", "CONTROLLER", new { id = 99 });

#9楼

值得注意的是,您可以传递多个参数。 id将用于构成URL的一部分,其他任何一个将作为参数传递给一个? 在网址中,将默认为UrlEncoded。

例如

return RedirectToAction("ACTION", "CONTROLLER", new {id = 99, otherParam = "Something", anotherParam = "OtherStuff" });

所以网址是:

    /CONTROLLER/ACTION/99?otherParam=Something&anotherParam=OtherStuff

然后,您的控制器可以引用它们:

public ActionResult ACTION(string id, string otherParam, string anotherParam) {// Your code}

#10楼

//How to use RedirectToAction in MVCreturn RedirectToAction("actionName", "ControllerName", routevalue);

return RedirectToAction("Index", "Home", new { id = 2});

#11楼

如果想要显示[httppost]错误消息,那么他/她可以尝试使用传递ID

return RedirectToAction("LogIn", "Security", new { @errorId = 1 });

这样的细节

 public ActionResult LogIn(int? errorId){if (errorId > 0){ViewBag.Error = "UserName Or Password Invalid !";}return View();}[Httppost]
public ActionResult LogIn(FormCollection form){string user= form["UserId"];string password = form["Password"];if (user == "admin" && password == "123"){return RedirectToAction("Index", "Admin");}else{return RedirectToAction("LogIn", "Security", new { @errorId = 1 });}
}

希望它工作正常。


#12楼

以下是asp.net core 2.1的成功。 它可能适用于其他地方 字典ControllerBase.ControllerContext.RouteData.Values可以在action方法中直接访问和写入。 也许这是其他解决方案中数据的最终目的地。 它还显示默认路由数据的来源。

[Route("/to/{email?}")]
public IActionResult ToAction(string email)
{return View("To", email);
}
[Route("/from")]
public IActionResult FromAction()
{ControllerContext.RouteData.Values.Add("email", "mike@myemail.com");return RedirectToAction(nameof(ToAction));// will redirect to /to/mike@myemail.com
}
[Route("/FromAnother/{email?}")]`
public IActionResult FromAnotherAction(string email)
{return RedirectToAction(nameof(ToAction));// will redirect to /to/<whatever the email param says>// no need to specify the route part explicitly
}

#13楼

RedirectToAction("Action", "Controller" ,new { id });

为我工作,不需要做new{id = id}

我正在重定向到同一个控制器内,所以我不需要"Controller"但我不确定当控制器需要作为参数时背后的具体逻辑。


#14楼

这可能是几年前,但无论如何,这也取决于你的Global.asax地图路线,因为你可以添加或编辑参数以适合你想要的。

例如。

Global.asax中

    public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parameters//new { controller = "Home", action = "Index", id = UrlParameter.Optional new { controller = "Home", action = "Index", id = UrlParameter.Optional,extraParam = UrlParameter.Optional // extra parameter you might need});}

那么你需要传递的参数将改为:

return RedirectToAction( "Main", new RouteValueDictionary( new { controller = controllerName, action = "Main", Id = Id, extraParam = someVariable } ) );

带参数的RedirectToAction相关推荐

  1. [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解

    模板布局 公共部分通常定义为模板布局:如页眉,页脚,公共导航栏.菜单等. 模板布局定义方法 布局页中用 th:fragment 定义模板片段,其他页面用 th:insert 引用片段 例如:foote ...

  2. MySQL 学习笔记(6)— 存储过程创建、调用、删除以及带参数的存储过程

    1. 存储过程总结 存储过程是一种存储在数据库中的程序.它可以包含多个 SQL 语句,并提供许多过程语言的功能,例如变量定义.条件控制语句.循环语句.游标以及异常处理等. 1.1 存储过程优点 实现代 ...

  3. js循环动态绑定带参数函数遇到的问题及解决方案[转]

    今天写原生javascript时,想利用绑定事件实现类似jquery中on方法的功能:于是有了for循环里绑定事件,无意中发现定义类能解决好多问题! 例如:一个不确定长度的列表,在鼠标经过某一条的时候 ...

  4. VC下提前注入进程的一些方法2——远线程带参数

    在前一节中介绍了通过远线程不带参数的方式提前注入进程,现在介绍种远线程携带参数的方法.(转载请指明出处) 1.2 执行注入的进程需要传信息给被注入进程 因为同样采用的是远线程注入,所以大致的思路是一样 ...

  5. 微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能

    微信小程序开发交流qq群   581478349    承接微信小程序开发.扫码加微信. 正文: 先上效果图,再附上完整源码: 1.多张图片循环渲染后预览.保存.识别带参数二维码 <view w ...

  6. 爬虫之requests模块发送带参数的请求

    爬虫之requests模块发送带参数的请求 我们在使用百度搜索的时候经常发现url地址中会有一个 ?,那么该问号后边的就是请求参数,又叫做查询字符串 1.1 在url携带参数 直接对含有参数的url发 ...

  7. python get方法请求参数_python中requests库get方法带参数请求

    起因是想爬五等分的花嫁的漫画.这是其中的一个坑 先上代码 data={'cid':567464,'page':1,'key':'','language':1,'gtk':6,'_cid':567464 ...

  8. 详解vue 路由跳转四种方式 (带参数)

    本文介绍了vue 路由跳转四种方式 (带参数),本文通过实例代码给大家介绍的详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1. router-link 1. 不带参数 <router-li ...

  9. python用海伦公式求面积_用带参数的宏定义,通过海伦公式求三角形的面积

    要求: 海伦公式: ,其中 ,a,b,c为三角形的三个边.定义两个带参数的宏,一个用来求p,另一个用来求s 题目分析: 首先,题目要求是通过输入三角形的三条边,输出三角形的面积.因为不是任意的三条边都 ...

最新文章

  1. Eclipse工作空间还原到最初状态
  2. Android自定义进度条
  3. java架构师学习笔记
  4. VTK:几何对象之Sphere
  5. 老男孩最近几年常用的免费的开源软件
  6. python的socket编程执行顺序_Python篇-Socket网络编程
  7. 【先生】丘成桐:中国人可以做世界一流学者
  8. tp3.2部署在nginx主页正常,其他页面404问题解决方式
  9. C++之临时对象、常引用和浅拷贝探究
  10. 前端算法-基本排序算法比较
  11. python多维数组添加元素_numpy中三维数组中加入元素后的位置详解
  12. 浅谈RSTP的快速收敛机制 P/A机制
  13. Hyperledger Fabric1.4超详细环境搭建 搭建不出来本博主倒立写代码
  14. ARM嵌入式核心板介绍
  15. 虚拟化性能计数器需要至少一个可正常使用的计数器。 模块“VPMC”启动失败。 未能启动虚拟机。
  16. 【复习笔记】计算机网络求职考点整理
  17. UA MATH524 复变函数8 Cauchy定理与原函数
  18. cjz格式文件打开方式_鹏业四川CJZ整体解决方案
  19. uni-app微信公众号登录
  20. 用C语言编写简易计算器

热门文章

  1. 从os.cpus()来分析nodejs源码结构
  2. Swift Basic 3
  3. Linux——进程管理简单学习笔记(二)
  4. Android:读取assets目录下文件(二)
  5. mysql的压缩版安装
  6. JQuery在循环中绑定事件的问题详解
  7. 转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较
  8. 工程师追查线上问题(或运维)常用的shell命令
  9. 巧用iptables五招免费搞定SYN洪水攻击
  10. Windows下误删文件解决办法