У меня есть пользовательский атрибут, который проверяет условия и перенаправляет пользователя на части приложения в соответствии с требованиями бизнеса. Код ниже типичный:
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.