2010-10-19 3 views
0

У меня есть настраиваемый атрибут, который проверяет условия и перенаправляет пользователя к частям приложения, как это необходимо в соответствии с требованиями бизнеса. Приведенный ниже код является типичным:.Как проверить путь в ASP.NET MVC 2?

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.

ответ

0

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

Когда вы дошли до этого, ознакомьтесь с this answer :)

Смежные вопросы