将其他ViewData传递到强types的部分视图
我有一个强types的部分视图,需要一个ProductImage,当它被渲染时,我也想提供一些额外的ViewData,我在包含页面dynamic创build。 我怎样才能通过RenderPartial调用将我的强types对象和我自定义的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
的构造函数重载,则可以在保留现有View数据的同时传递新的View数据,如下所示:
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;
创build另一个包含强types类的类。
添加你的新东西到课堂并在视图中返回。
然后在视图中,确保你inheritance你的新类,并改变现在会出错的代码位。 即对你的领域的引用。
希望这可以帮助。 如果没有,那么让我知道,我会发布特定的代码。
传递额外数据的最简单方法是将数据添加到视图的现有ViewData中,如@Joel Martinez所注意的那样。 但是,如果你不想污染你的ViewData,那么RenderPartial就有一个方法,它有三个参数和你显示的双参数版本。 第三个参数是一个ViewDataDictionary。 您可以构build一个单独的ViewDataDictionary,仅用于包含要传入的额外数据的部分。
您可以使用dynamicvariablesViewBag
ViewBag.AnotherValue = valueToView;