Vic*_*tor 5 viewdata partial-views asp.net-mvc-3
我有一个控制器调用视图.在视图中有一个局部视图,插入如下:
@{ Html.RenderPartial("PartialViewName", this.Model);}
Run Code Online (Sandbox Code Playgroud)
这很好用.
但是在控制器中我希望在ViewData或ViewBag中添加一些我将在局部视图中使用的东西.我怎样才能做到这一点?
你应该能够做到这一点.View Bag和View Data在Action方法的整个生命周期中都可用,因此如果您添加一个项目来查看获取视图的控制器方法中的数据,那么在该视图上呈现的任何后续部分都将有权访问视图数据.在部分视图中从视图数据获取值的语法非常简单.例:
@{
var variable = ViewData["My Key"];
}
Run Code Online (Sandbox Code Playgroud)
Html.Partial 和 Html.RenderPartial 都有一个接受 ViewDataDictionary 的重载。您可以构建一个新的,或者简单地传递现有的。
@{ Html.RenderPartial("_MyPartial", Model.Property, new ViewDataDictionary { ... });}
Run Code Online (Sandbox Code Playgroud)
或者
@{ Html.RenderPartial("_MyPartial", Model.Property, ViewData);}
Run Code Online (Sandbox Code Playgroud)
我相当确定 ViewBag 可以被您的部分访问,而无需传递任何参数。
编辑:
ViewBag 和 ViewData 绝对可用于部分模板和编辑器/显示模板。您可以在从属视图访问它们之前在视图中编辑它们,如下所示:
@{ ViewBag.MyNewValue = "..."; }
@Html.Partial("_MyPartial", Model)
Run Code Online (Sandbox Code Playgroud)
然后在你的部分:
@{ string myString = ViewBag.MyNewValue; }
Run Code Online (Sandbox Code Playgroud)