Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我可以将ViewBag和模型都传递给视图吗_Asp.net_Asp.net Mvc_Vb.net_Asp.net Mvc 4_Viewbag - Fatal编程技术网

Asp.net 我可以将ViewBag和模型都传递给视图吗

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.

我可以使用混合方法在ViewBag(C#)/ViewData(VB)中传递信息,但也包括模型吗

例如,我开始通过错误控制器向错误视图传递一个简单的标题:

函数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
在您同时设置时丢失了。。。