我有一个强类型的局部视图,需要一个ProductImage,当它被渲染我也想向它提供我在包含页面动态创建一些额外的ViewData。 我怎么能同时通过我的强类型的对象,我自定义的ViewData与调用的RenderPartial的局部视图?
var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
index++;
}
的RenderPartial需要另一个参数,这只是一种的ViewDataDictionary。 你几乎没有,只是这样称呼它:
Html.RenderPartial(
"ProductImageForm",
image,
new ViewDataDictionary { { "index", index } }
);
请注意,这将覆盖默认的ViewData你的所有其他浏览在默认情况下。 如果要添加什么ViewData的,它不会在您传递到您的局部视图这个新字典。
为了扩大在什么womp贴,你可以 ,如果你使用的构造函数重载通过新的查看数据,同时保留现有的查看数据ViewDataDictionary
像这样:
Html.RenderPartial(
"ProductImageForm",
image,
new ViewDataDictionary(this.ViewData) { { "index", index } }
);
@Html.Partial("_Header", new ViewDataDictionary { { "HeaderName", "User Management" }, { "TitleName", "List Of Users" } })
or
@{Html.RenderPartial("_Header", new ViewDataDictionary { { "HeaderName", "User Management" }, { "TitleName", "List Of Users" } });}
部分页面(_Header):
<div class="row titleBlock">
<h1>@ViewData["HeaderName"].ToString()</h1>
<h5>@ViewData["TitleName"].ToString()</h5>
</div>
我觉得这应该不是吗?
ViewData["currentIndex"] = index;
创建一个包含你的强类型类另一个类。
新的东西添加到类和视图返回。
然后在视图中,确保你继承你的新类和更改代码,现在将是错误的位。 即引用您的域。
希望这可以帮助。 如果没有,那么让我知道,我会发布特定的代码。
通过额外的数据最简单的方法是将数据添加到现有的ViewData的视图@Joel马丁内斯说。 但是,如果你不想污染您的ViewData,拥有的RenderPartial这三个参数,以及你显示两个参数版本的方法。 第三个参数是一个的ViewDataDictionary。 您可以构建一个独立的ViewDataDictionary只为你的部分只包含额外的要在传递数据。
You can use the dynamic variable ViewBag
ViewBag.AnotherValue = valueToView;
this.ViewData.Add( “索引”,索引);
Html.RenderPartial( “ProductImageForm”,图像,this.ViewData);
这也应该工作。