【问题标题】:How to validate a path in ASP.NET MVC 2?如何验证 ASP.NET MVC 2 中的路径?
【发布时间】:2010-10-19 14:30:32
【问题描述】:

我有一个自定义属性,可以根据业务需求检查条件并将用户重定向到应用程序的某些部分。下面的代码是典型的:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
  // ...
  if (condition) 
  {
    RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
    redirectTargetDictionary.Add("action", "MyActionName");
    redirectTargetDictionary.Add("controller", "MyControllerName");
    filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);
  }
  // ...
  base.OnActionExecuting(filterContext);
}

我只是被要求允许用户选择他们在登录时到达的默认页面。添加此功能后,我注意到如果没有对应于用户的操作/控制器,用户可能会出现一些异常行为默认页面(即如果应用程序被修改)。我目前正在使用类似下面的代码,但我正在考虑使用显式操作/控制器。

else if (condition)
{
  var path = "~/MyControllerName/MyActionName";
  filterContext.Result = new RedirectResult(path);
}

在将结果分配给 filterContext.Result 之前,如何检查结果的有效性?我想在重定向之前确保它对应于我的应用程序的工作部分 - 否则我不会将它分配给 filterContext.Result。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 routing


    【解决方案1】:

    我没有一个完整的答案,但首先是转到 RouteTable,获取集合,使用 HttpContextBase 的自定义实现调用 GetRouteData 以获取 RouteData。完成后,如果不为 null,则检查 Handler 是否为 MvcRouteHandler。

    到目前为止,请查看this 答案:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多