[英]Pass Additional ViewData to a Strongly-Typed Partial View
我有一個強類型的部分視圖,它采用 ProductImage 並且在呈現它時,我還想為它提供一些我在包含頁面中動態創建的附加 ViewData。 如何使用 RenderPartial 調用將強類型對象和自定義 ViewData 傳遞給局部視圖?
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 Martinez 所述。 但是,如果您不想污染 ViewData,RenderPartial 有一個方法,它接受三個參數以及您顯示的兩個參數版本。 第三個參數是一個 ViewDataDictionary。 您可以為您的部分構建一個單獨的 ViewDataDictionary,其中僅包含您想要傳入的額外數據。
我知道這是一篇舊帖子,但我在使用 core 3.0 遇到類似問題時遇到了它,希望它對某人有所幫助。
@{
Layout = null;
ViewData["SampleString"] = "some string need in the partial";
}
<partial name="_Partial" for="PartialViewModel" view-data="ViewData" />
這也應該有效。
this.ViewData.Add("index", index);
Html.RenderPartial(
"ProductImageForm",
image,
this.ViewData
);
您可以使用動態變量 ViewBag
ViewBag.AnotherValue = valueToView;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.