我会尽量保持简短:
在视图中
@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 的操作,我希望在其中呈现给 myview 的 ViewBag 可用。但当然不是,它已在“myview”中使用,仅此而已。因此,如果我想在 myview 操作中使用它,我需要将其存储在该视图的 ViewBag 中,或者设置 viewmodel 的一些值,以便可以将其返回到操作中。
那有意义吗?