我会尽量简明扼要地说明:
在视图中
在myview中,我们可以看到"thing"是可用的,也就是说这会在myview视图中产生Model.Thing的值:
所以我的问题是,如果ViewBag在结果myview中可用,它肯定以某种方式在httpcontext或controllercontext中传递,对吧?有人知道为什么它在控制器中不可用但在视图中可用,以及我如何能够访问它吗?
编辑
抱歉,我错过了一个重要的点!当“myview”被提交回控制器时,调用名为myview的操作时,我希望ViewBag呈现到myview中可用。但当然不是这样,它已经在“myview”中使用了。所以,如果我想在myview操作中使用它,我需要将其存储在该视图的ViewBag中,或者设置一些视图模型的值,以便可以将其提交回操作。
这有意义吗?
在视图中
@Html.RenderPartial("myview", Model.SubModel,
new ViewDataDictionary()
{
{ "thing", Model.Thing }
})
在myview中,我们可以看到"thing"是可用的,也就是说这会在myview视图中产生Model.Thing的值:
@ViewBag.thing
太棒了!简单易懂。
但是我需要处理一些东西(顺便说一下,这个东西不能成为SubModel的一部分),比如在我的视图引擎中或者最好在控制器中访问它,例如:
public ActionResult myview(SubModelType vm)
{
var thing = ViewBag.thing; // oh dear this doesnt exist.. but is there when the view is rendered
所以我的问题是,如果ViewBag在结果myview中可用,它肯定以某种方式在httpcontext或controllercontext中传递,对吧?有人知道为什么它在控制器中不可用但在视图中可用,以及我如何能够访问它吗?
编辑
抱歉,我错过了一个重要的点!当“myview”被提交回控制器时,调用名为myview的操作时,我希望ViewBag呈现到myview中可用。但当然不是这样,它已经在“myview”中使用了。所以,如果我想在myview操作中使用它,我需要将其存储在该视图的ViewBag中,或者设置一些视图模型的值,以便可以将其提交回操作。
这有意义吗?