【问题标题】:Use different ViewModel for ASP.NET MVC 3 global error page为 ASP.NET MVC 3 全局错误页面使用不同的 ViewModel
【发布时间】:2011-11-21 13:31:37
【问题描述】:

我正在使用全局过滤器来处理 ASP.NET MVC 3(带有 Razor 视图)中的错误。但是,我的 shared/_Layout 视图需要一个我称为 PageViewModel 的视图模型。

当我遇到错误时,共享/错误视图会被编译 - 但是因为它引用了布局文件,所以我得到了这个异常:

异常消息:传入字典的模型项是 键入“System.Web.Mvc.HandleErrorInfo”,但此字典需要 'ViewModels.PageViewModel' 类型的模型项。

知道如何解决这个问题吗?

这是错误视图:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2>Sorry, an error occurred while processing your request.</h2>

【问题讨论】:

  • 您是否在错误视图中使用 HandleErrorInfo 模型?
  • 不,整个视图都贴在上面了。
  • 如果您不使用 HandleErrorInfo 中的任何值,是否需要强类型化错误视图?或者,布局是否需要强类型?这不会对任何其他强类型视图造成同样的问题吗?
  • 需要强类型布局,以便我可以将站点设置等放入标准模板。我想我可以通过使用子操作以不同的方式做到这一点。

标签: asp.net-mvc-3


【解决方案1】:

你不能把错误放到 ViewBag 中,然后把视图发送到普通的 PageViewModel 吗?

这是 MVC 中全局异常处理的一个很好的例子,How can I properly handle 404 in ASP.NET MVC?

【讨论】:

  • 我并没有专门调用视图——这是在 ASP.NET 中的某个地方发生的——你知道如何覆盖它以便我可以更改发送的视图模型吗?
  • 这里是 MVC 中全局异常处理的一个很好的例子,stackoverflow.com/questions/619895/…。您可能应该沿着这条路径专门调用您的错误视图。我支持达拉斯,但强类型布局可能会给您带来其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2012-03-16
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多