有人可以纠正我对ViewDataDictionary如何工作的理解吗?

时间:2011-05-18 14:04:12

标签: c# asp.net-mvc

有人可以纠正我对这里发生的事情的理解吗?

假设以下内容:

<% foreach (var company in Model.Companies) { %>

    <% Html.RenderPartial("FundList", Model, new ViewDataDictionary(company)); %>

<% } %>

我的印象是,这将呈现名为FundList.ascx的部分视图,同时传递Model对象(包含大量内容),以及company对象,其中包含特定于公司的数据。

但是,当我在FundList中检查可用的数据时,我只能看到对原始Model对象的引用。我在任何地方都看不到company。这应该在ViewData吗?

如何才能在company部分中获得FundData个对象?

3 个答案:

答案 0 :(得分:2)

你试过......

   <% Html.RenderPartial(
          "FundList", 
          Model, 
          new ViewDataDictionary { { "company", company } }); %>

答案 1 :(得分:1)

你的部分应该从类型ViewPage<Company>继承,然后你可以直接将当前公司作为viewmodel传递。 托管页面的ViewDataDictionary将自动切换到部分。

<% Html.RenderPartial("FundList", company); %>

答案 2 :(得分:1)

如何将foreach移动到局部视图中,无需使用此viewdata?看起来对我来说是最干净的解决方案。

如果没有,你确定你真的需要“模特”吗?公司不应该是你的模特,而其他的东西不应该与部分观点有关吗?

否则,请转到包含所需所有属性的viewmodel。