Как проверить путь в ASP.NET MVC 2? - PullRequest
0 голосов
/ 19 октября 2010

У меня есть пользовательский атрибут, который проверяет условия и перенаправляет пользователя на части приложения в соответствии с требованиями бизнеса. Код ниже типичный:

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.

1 Ответ

0 голосов
/ 19 октября 2010

У меня нет готового ответа, но для начала нужно было бы перейти к RouteTable, получить коллекцию, вызвать GetRouteData с пользовательской реализацией HttpContextBase для получения RouteData. Когда закончите, если не ноль, проверьте, является ли Обработчик MvcRouteHandler.

Когда у вас так далеко, проверьте этот ответ:)

...