У меня есть некоторый код в 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, это будет легко.