【发布时间】:2014-12-01 23:09:30
【问题描述】:
我可以使用混合方法,在 ViewBag (C#) / ViewData (VB) 中传递信息,但也包含模型
例如,我开始通过错误控制器将简单的标题传递给错误视图:
Function NotFound() As ActionResult
Response.StatusCode = 404
ViewData.Add("Title", "404 Error")
Return View("Error")
End Function
这很好,视图可以访问属性@ViewData("Title")
然后我想在 HandleErrorInfo 对象中包含一些由自定义错误自动路由的异常信息,如下所示:
Function NotFound(exception As HandleErrorInfo) As ActionResult
Response.StatusCode = 404
ViewData.Add("Title", "404 Error")
ViewData.Add("Message", "Sorry, the requested page could not be found.")
Return View("Error", exception)
End Function
然后,在视图上,我声明了一个这样的模型:
@ModelType System.Web.Mvc.HandleErrorInfo
现在我可以访问像@Model.Exception.Message 这样的属性,但我的@ViewData("Title") 消失了。
WebViewPage(Of TModel) 仍然有一个 ViewData 属性,但看起来我无法从控制器向它传递任何东西,除非它明确在模型中。
当然,作为一种解决方法,我可以创建一个可以为每个对象强类型存储的基类,但是当我想通过 ViewBag 传递的只是标题时,这似乎有点笨拙。
有没有办法同时使用 ViewBag 和 Model?
【问题讨论】:
-
这是传递模型和视图包的常规方法。在我的 MVC 4/5 项目中为我工作,但它们在 C# 中。检查你那边出了什么问题。
-
同时使用
ViewBag和@model很好,首先我听说ViewBag在同时设置时会丢失...
标签: asp.net asp.net-mvc vb.net asp.net-mvc-4 viewbag