Как я могу перенаправить после определения ActionResult?
В ASP.NET MVC я хотел бы сделать что-то вроде:
- Пусть базовый контроллер проверит тип
ActionResult
, - Если
ActionResult
этоViewResult
загрузить некоторые общие данные для всех просмотров. - Если общие данные соответствуют определенным критериям, перенаправьте на страницу входа.
Как бы вы это реализовали?
Я думал о следующем, но, кажется, перенаправление не работает (из-за действия уже были выполнены?). Это можно обойти?
public abstract class BaseController : Controller
{
protected override void OnActionExecuted
(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
// If the result is a view result,
// then it loads the shared data (for use in shared view):
if (filterContext.Result is ViewResult)
LoadSharedData();
}
private void LoadSharedData()
{
// TODO: Loads the data that is common for all views.
// TODO: If the shared data fulfills some specific criteria,
// it will redirect to a login page.
Redirect("http://someurl");
}
}
1 ответ
Решение
Я думаю, что нашел ответ, попробовав это:
filterContext.Result = Redirect("http://someurl");
Оно работает.