asp.net-mvc – 是否可以使用RedirectToAction清除路由值?
发布时间:2020-05-24 09:23:37 所属栏目:asp.Net 来源:互联网
导读:我想重定向到同一控制器中的操作,但丢失路由值(特别是id值).事实证明这非常困难.我有像这样配置的路由: context.MapRoute( Monitoring_controllerIdSpecified, Monitoring/{controller}/{id}/{action}, new { action = Status });context.Ma
|
我想重定向到同一控制器中的操作,但丢失路由值(特别是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-mvc – 为什么我的动作方法不会超时?
- asp.net – 如何判断一个方法是否在UpdatePanel回发中运行?
- asp.net-mvc – 在ASP.NEt MVC 3中传递Html.BeginForm()中D
- ASP.NET web.config中数据库连接字符串connectionStrings节
- asp.net – 如何在gridview中将navigateurl添加到超链接
- asp.net – 页面刷新和页面回发之间的区别
- asp.net-mvc – 跟踪登录用户
- 如何在asp.net MVC 3中获取当前的视图名称?
- ASP Classic – XML Dom
- 何时使用ASP.NET MVC与ASP.NET Web窗体?
推荐文章
站长推荐
- asp.net-core – 在asp.net vnext中使用Startup.
- Page_Load在ASP.NET页面中触发两次
- 流作为System.Net.Mail的附件是0字节
- 如何配置asp.net与.net 4.5
- asp.net-mvc – 如何传递特殊字符使ASP.NET MVC可
- asp.net-mvc – 使用ASP.NET MVC进行消防和遗忘
- asp.net-mvc – Asp.net MVC 3验证在TryUpdateMo
- asp.net-mvc – MVC 5防止通过iframe访问内容
- 验证 – ASP.NET MVC 4避免生成datetime的data-v
- asp.net-mvc – Context.User.Identity.Name为nu
热点阅读
