【发布时间】: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