Как я могу перенаправить после определения ActionResult? - PullRequest
0 голосов
/ 09 мая 2009

В 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 Ответ

0 голосов
/ 09 мая 2009

Я думаю, что нашел ответ, попробовав это:

filterContext.Result = Redirect("http://someurl");

Работает.

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