Asp.net 我可以将ViewBag和模型都传递给视图吗
我可以使用混合方法在ViewBag(C#)/ViewData(VB)中传递信息,但也包括模型吗 例如,我开始通过错误控制器向错误视图传递一个简单的标题:Asp.net 我可以将ViewBag和模型都传递给视图吗,asp.net,asp.net-mvc,vb.net,asp.net-mvc-4,viewbag,Asp.net,Asp.net Mvc,Vb.net,Asp.net Mvc 4,Viewbag,我可以使用混合方法在ViewBag(C#)/ViewData(VB)中传递信息,但也包括模型吗 例如,我开始通过错误控制器向错误视图传递一个简单的标题: 函数NotFound()作为ActionResult Response.StatusCode=404 添加(“标题”,“404错误”) 返回视图(“错误”) 端函数 这工作正常,视图可以访问属性@ViewData(“Title”) 然后我想在对象中包含一些由自定义错误自动路由的异常信息,如下所示: @ModelType System.Web.
函数NotFound()作为ActionResult
Response.StatusCode=404
添加(“标题”,“404错误”)
返回视图(“错误”)
端函数
这工作正常,视图可以访问属性@ViewData(“Title”)
然后我想在对象中包含一些由自定义错误自动路由的异常信息,如下所示:
@ModelType System.Web.Mvc.HandleErrorInfo
函数未找到(异常为HandleErrorInfo)作为ActionResult
Response.StatusCode=404
添加(“标题”,“404错误”)
添加(“消息”,“对不起,找不到请求的页面。”)
返回视图(“错误”,异常)
端函数
然后,在视图上,我声明了如下模型:
@ModelType System.Web.Mvc.HandleErrorInfo
现在我可以访问像@Model.Exception.Message这样的属性,但是我的@ViewData(“Title”)
已经消失了
仍然有一个ViewData
属性,但是看起来我不能从控制器向它传递任何东西,除非它显式地在模型中
当然,作为一种解决方法,我可以创建一个基类,该基类可以为每个对象强类型存储,但当我只想通过ViewBag传递标题时,这似乎有点过于繁重
是否有一种方法可以同时使用ViewBag和模型?在这种情况下,当CustomErrors试图路由到Error
控制器上的NotFound
操作时,它只能提供默认构造函数。没有找到一个,它完全绕过了控制器,直接进入错误页面,该页面已经准备好了它想要传递的模型
作为一个小的概念证明,传递这两个参数是完全可能的,这一示例证明了这一点
TestModel.vb:
@ModelType TestModel
@Model.ModelInfo @ViewData("ViewDataInfo")
公共类测试模型
公共属性ModelInfo作为字符串
末级
TestController.vb:
@ModelType TestModel
@Model.ModelInfo @ViewData("ViewDataInfo")
Public类TestController:继承System.Web.Mvc.Controller
函数Index()作为ActionResult
使用{.modelnfo=“Hello”}将模型调整为新的TestModel
ViewData(“ViewDataInfo”)=“世界”
返回视图(“索引”,模型)
端函数
末级
Test\Index.vbhtml:
@ModelType TestModel
@Model.ModelInfo @ViewData("ViewDataInfo")
这是传递模型和viewbag的常规方法。在我的MVC4/5项目中对我有用,但它们在C#中。检查您的一侧出了什么问题。同时使用ViewBag
和@model
是可以的,首先我听说ViewBag
在您同时设置时丢失了。。。