Перенаправить на другой контроллер - PullRequest
4 голосов
/ 21 сентября 2008

У меня есть некоторый код в IAuthorizationFilter, который перенаправляет пользователя на страницу входа, но у меня возникают проблемы при смене используемого контроллера. Так что я мог бы сделать

public void OnAuthorization(AuthorizationContext context)
{
  UserController u = new UserController();
  context.Result = u.Login();
  context.Cancel = true;
 }

Но это приводит к

The view 'Login' or its master could not be found. The following locations were searched:
~/Views/Product/Login.aspx
~/Views/Product/Login.ascx
~/Views/Shared/Login.aspx
~/Views/Shared/Login.ascx

Я запускаю это из контроллера продукта. Как заставить механизм представления использовать контроллер пользователя, а не контроллер продукта?


Редактировать: у меня это работает с

RedirectResult r = new RedirectResult("../User.aspx/Login");
context.Result = r; 
context.Cancel = true;

Но это клочок, я уверен, что есть лучший способ. К сожалению, в ActionFilterAttribute мало что видно. Похоже, что это может быть полезно, если на контроллере, представленном в AuthorizationContext, выставлено RedirectToAction, это будет легко.

1 Ответ

2 голосов
/ 21 сентября 2008

Согласитесь с ddc0660, вы должны перенаправить. Не запускайте u.Login (), а устанавливайте context.Result для RedirectResult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...