Возвратный вид из ActionFilter - PullRequest
17 голосов
/ 03 февраля 2009

У меня есть ActionFilter, который проверяет, является ли параметр в URL допустимым. Если он недействителен, я должен сделать вид. Я не хочу перенаправлять, потому что мне все еще нужен ActionExecutingContext. Можно ли это сделать?

    public override void  OnActionExecuting(ActionExecutingContext filterContext)
    {
        Guid processIdentifier = (Guid)filterContext.RouteData.Values["processIdentifier"];
        //if processIdentifier  not found render a view with message and some other objects in ViewData
        filterContext.Controller.ViewData.ModelState.AddModelError("WrongProcessIdentifier", "The process-id you supplied is not valid");
        base.OnActionExecuting(filterContext);
    }

Ответы [ 3 ]

37 голосов
/ 03 февраля 2009

HandleErrorAttribute было то, что я искал.

filterContext.Result = new ViewResult
            {
                ViewName = "MessagePage",
                ViewData = filterContext.Controller.ViewData,
                TempData = filterContext.Controller.TempData
            };
1 голос
/ 03 февраля 2009

Да. Посмотрите на источник для HandleErrorAttribute.

0 голосов
/ 03 февраля 2009

Попробуйте это

[HandleError]
public ActionResult MyAction (int id)
{
    // ...
}

И поместите вид, в котором вы хотите визуализировать, в ~/Views/Shared/Error.ascx.

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