asp.net-mvc – 是否可以使用RedirectToAction清除路由值?
发布时间:2020-12-15 22:16:26 所属栏目:asp.Net 来源:网络整理
导读:我想重定向到同一控制器中的操作,但丢失路由值(特别是id值).事实证明这非常困难.我有像这样配置的路由: context.MapRoute( "Monitoring_controllerIdSpecified","Monitoring/{controller}/{id}/{action}",new { action = "Status" });context.MapRoute( "Mo
我想重定向到同一控制器中的操作,但丢失路由值(特别是id值).事实证明这非常困难.我有像这样配置的路由:
context.MapRoute( "Monitoring_controllerIdSpecified","Monitoring/{controller}/{id}/{action}",new { action = "Status" } ); context.MapRoute( "Monitoring_default","Monitoring/{controller}/{action}",new { controller = "Events",action = "Index" } ); …和EventsController中的一个动作方法是这样的: public ActionResult Status(int id) { if (id > 1000) { TempData["ErrorMessage"] = "ID too high."; return RedirectToAction("Index",new { id = (int?)null }); } // (code to display status) } 如果我然后访问/ Monitoring / Events / 1001之类的东西,确实调用了RedirectToAction,但是我被重定向到/ Monitoring?id = 1001而不仅仅是/ Monitoring.它似乎匹配第一个路径,Monitoring_controllerIdSpecified,即使该路由具有id作为强制路由参数,我告诉它将id设置为null,并奇怪地将id转换为查询字符串键.换句话说,它没有正确清除/删除id路由值.在传递给RedirectToAction的routeValues对象中将id设置为空字符串只会产生与将其设置为null相同的效果. 为什么这样做,我怎么能说服它不匹配第一条路线,因为id已经从路线值中完全删除了? 解决方法
感谢@Slicksim我发现答案是从RouteData.Values中删除密钥而不是将其设置为null:
public ActionResult Status(int id) { if (id > 1000) { TempData["ErrorMessage"] = "ID too high."; RouteData.Values.Remove("id"); return RedirectToAction("Index"); } // (code to display status) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用asp.net图表控件的多列图表
- ASP.Net MVC 3应用程序在应用程序池回收时随机失败
- asp.net-mvc – VaryByParam =“*”是否也读取了RouteData.
- asp.net-core – AuthorizationHandler和数据库依赖注入
- asp.net-mvc-2 – ASP.NET MVC SiteMap
- asp.net – 如何使用GridView和ObjectDataSource排序?
- 使用ASP.NET而不是MVC的Twitter引导程序
- asp.net – 如何在.net 3.5中托管我的MVC3应用程序?
- asp.net – Visual Studio 2013 Update 2无法打开cshtml
- 您是否可以覆盖Date.Now或Date.Today以在ASP.NET Web应用程
推荐文章
站长推荐
- asp.net-mvc – 在同一个视图文件夹中的RenderPa
- ASP.NET WebApi使用Swagger做接口文档
- 如何从ASP.NET MVC中的后台线程解析应用程序URL?
- asp.net – nhibernate死锁
- ASP.Net MVC 3 – 密码保护视图
- asp.net – 寻找RESTful API的身份验证/模拟策略
- asp.net – 由于Microsoft.Web.Services3.StateM
- asp.net-core – 从显式类型的ASP.NET Core API控
- 如何将ASP.NET FormView绑定到单个记录?
- asp.net-mvc – Asp.Net MVC主题,如何?
热点阅读