Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有人能纠正我对ViewDataDictionary工作原理的理解吗?_C#_Asp.net Mvc - Fatal编程技术网

C# 有人能纠正我对ViewDataDictionary工作原理的理解吗?

C# 有人能纠正我对ViewDataDictionary工作原理的理解吗?,c#,asp.net-mvc,C#,Asp.net Mvc,有人能纠正我对这里发生的事情的理解吗 假设如下: <% foreach (var company in Model.Companies) { %> <% Html.RenderPartial("FundList", Model, new ViewDataDictionary(company)); %> <% } %> 我的印象是,这将呈现一个名为FundList.ascx的局部视图,同时传递一个模型对象(其中包含大量内容),以及一个公司对象,

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

假设如下:

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

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

<% } %>

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

但是,当我检查
FundList
中提供给我的数据时,我只能看到对原始
Model
对象的引用。我在任何地方都看不到公司。这是否应在
视图数据中提供

基金数据
部分中获取
公司
对象对我来说最合适的方式是什么?

您是否尝试过

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

您的partial应该从type
ViewPage继承,然后您可以直接将当前公司作为viewmodel传递。
宿主页面的ViewDataDictionary将自动传递到分部

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

将foreach移动到局部视图中,消除对该视图数据的需要,怎么样?对我来说这是最干净的解决方案

如果不是,你确定你真的需要“模型”吗?公司不应该是你的榜样,而其他的东西不应该是关于局部观点的吗

否则,请选择包含所需所有属性的viewmodel