我有一个控制器调用视图.在视图中有一个PartialView叫做be @Html.Partial("ViewName", model).this的工作正常.
但是controller我希望在viewbag中添加一些东西,这些东西很难放入view模型中,然后传递给视图.主视图访问没有问题ViewBag,但在PartialView它没有返回任何东西.
是否有可能ViewBag在这种情况下使用或者我应该将这些数据"破解"到我传递给视图的模型中(我传递给PartialView的模型,以及我传递给第一个PartialView嵌套的模型PartialView)?
有没有办法ViewDataDictionary用一行代码创建一个模型和附加属性.我试图RenderPartial在组装模型和一些额外的显示配置属性时调用强类型视图,而无需跨多行显式组装ViewDataDictionary.似乎有可能给出RenderPartial一个模型object和a 的重载,ViewDataDictionary但看起来它只是忽略了ViewDataDictionary它们都被填充.
// FAIL: This will result in ViewData being a ViewDataDictionary
// where Model = MyModelObject and there are no other parameters available.
this.Html.RenderPartial("SomePartialView", MyModelObject, new ViewDataDictionary(new { SomeDisplayParameter = true }));
Run Code Online (Sandbox Code Playgroud)
我发现其他人有同样的问题,但他们的解决方案是我发现的相同的多线概念:ViewDataDictionary用模型创建离散,添加新参数并在RenderPartial调用中使用它.
var SomeViewData = new ViewDataDictionary(MyModelObject);
SomeViewData.Add("SomeDisplayParameter", true);
this.Html.RenderPartial("SomePartialView", SomeViewData);
Run Code Online (Sandbox Code Playgroud)
我总是可以将这个逻辑包装成一个ChainedAdd方法,该方法返回一个重复的字典,并添加了新的元素,但似乎我错过了一些创建一个ViewDataDictionary可以为我做这个的方法(这比我希望的更多开销)对于).
this.Html.RenderPartial("SomePartialView", new ViewDataDictionary(MyModelObject).ChainedAdd("SomeDisplayParameter", true));
public static ViewDataDictionaryExtensions {
public static ViewDataDictionary ChainedAdd(this ViewDataDictionary source, …Run Code Online (Sandbox Code Playgroud)