我在谷歌上搜索了很多,但还是没有运气。
这是我的RouteConfig.cs。
routes.MapRoute("BackRoute", "back/{controller}/{action}"
,new { controller = "Home", action = "Index" });
routes.MapRoute("Default", "{controller}/{action}"
,new { controller = "Home", action = "Index" });正如您所看到的,有相同的参数,但是我有业务逻辑可以从后面的代码中选择BackRoute和Default。
我能从ActionFilterAttribute换乘路线吗?
public override void OnActionExecuting(ActionExecutingContext filterContext){
bool logic = true;
RouteValueDictionary rvd = filterContext.RouteData.Values;
if(logic){
filterContext = new RedirectToRouteResult("BackRoute",
new RouteValueDictionary(new {
controller = rvd["controller"].ToString()
, action = rvd["action"].ToString() }));
}
}你们能给我建议一下实现这个目标的好方法吗?
提前谢谢你,
和平
发布于 2014-03-21 03:15:54
在属性中可以使用:
filterContext.Result = new RedirectToRouteResult("BackRoute",
new RouteValueDictionary(
new { action = "Index", controller = "Home" });更新:无限循环意味着您要重定向到首先调用的操作。在设置RedirectToRouteResult之前,尝试再添加一次检查:
if(logic && filterContext.RouteData.Route != RouteTable.Routes["BackRoute"])
{
filterContext.Result = new RedirectToRouteResult("BackRoute",
new RouteValueDictionary(new {
controller = rvd["controller"].ToString()
, action = rvd["action"].ToString() }));
}https://stackoverflow.com/questions/22549296
复制相似问题