MVC 5 — передать объект в общий вид

Я разрабатываю интернет-приложение MVC 5, и у меня есть вопрос относительно передачи object общему view.

У меня есть view с именем CustomError.cshtml в общей папке. Этот view имеет следующий тип модели: @model CanFindLocation.ViewModels.CustomErrorViewModel

Как я могу передать объект типа CanFindLocation.ViewModels.CustomErrorViewModel этому view из функции protected override void OnException(ExceptionContext filterContext) в controller?

Вот мой код:

protected override void OnException(ExceptionContext filterContext)
{
    Exception e = filterContext.Exception;

    if (e is HttpRequestValidationException)
    {
        filterContext.ExceptionHandled = false;
        customErrorViewModel = customErrorService.GetDefaultCustomError(customErrorType, "Test message.");
        RedirectToAction("CustomError", customErrorViewModel);
    }
}

Вместо отображаемого view вызывается следующая функция:

protected void Application_Error(object sender, EventArgs e)

Заранее спасибо.


person user3736648    schedule 08.12.2014    source источник
comment
@ user373648: какое исключение возникает в Application_Error?   -  person clement    schedule 08.12.2014


Ответы (1)


Я не думаю, что вы можете вернуть представление, как хотите, поэтому я обычно помещаю значения в TempData и делаю перенаправление на домашнюю страницу или любую другую целевую страницу.

Домашняя страница проверяет, есть ли значение в этом Viewbag, и показывает ошибку, если есть ошибка.

Контроллер:

public class BaseController : Controller
    {
        protected void SetError(string message, params object[] args)
        {
            TempData["UIError"] = string.Format(message, args);
        }
    }

В моем общем (основном) представлении макета:

@if (TempData["UIError"] != null)
        {
            <div class="alert alert-danger" role="alert">
                <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
                <span class="sr-only">Error:</span>
                @TempData["UIError"]
            </div>
        }
person clement    schedule 08.12.2014