Как я могу перенаправить после определения 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");

Оно работает.

Другие вопросы по тегам