【问题标题】:Render Partial View in parent view containing list of other model在包含其他模型列表的父视图中渲染局部视图
【发布时间】:2016-05-05 05:08:11
【问题描述】:

我有一个局部视图:UnderAge.cshtml 我在该局部视图中获得了Artist(模型类)的列表。我有一个Index 父视图,它显示Person(其他模型类)的列表,我想在其中添加来自部分视图UnderAge.cshtml 的内容。我检查了部分视图是否正常工作并且它有一个包含两个元素的列表,问题是当我尝试在 Index 父视图上从部分视图 UnderAge.cshtml 显示 Artist 的列表时,可能是因为索引是使用来自其他模型类(Person)的元素。

部分视图(我只放了@model 部分),它显示了艺术家模型类的列表:

@model IEnumerable<AlexMusicStore.Models.Artist>

父视图(有不同的@model)我得到了这个异常:

传入字典的模型项的类型为“System.Collections.Generic.List'1[AlexMusicStore.Models.Person]”,但此字典需要类型为“System.Collections.Generic.IEnumerable”的模型项1[AlexMusicStore.Models.Artist]'。

@model IEnumerable<AlexMusicStore.Models.Person>

<div>
@{ 
    Html.RenderPartial("~/Views/Artists/UnderAge.cshtml", Model);
}
    </div>

【问题讨论】:

  • 错误是不言自明的。您的传递 Model(这是 Person 的集合到需要 Artist 集合的视图
  • 更改到这一行 Html.RenderPartial("~/Views/Artists/UnderAge.cshtml", Model.Artist); 所以假设你的模型有一个名为 Artist 的属性,它的类型是 IEnumerable&lt;AlexMusicStore.Models.Artist&gt;
  • @Reddy,模型是 IEnumerable&lt;Person&gt; - 它不可能有一个属性是 Artist :)
  • @Reddy 我会尝试使用 RenderAction,我会通知您,谢谢您的建议
  • @Reddy 它与 RenderAction 配合得很好。谢谢!!

标签: c# html asp.net-mvc razor


【解决方案1】:

试试这个,

@model IEnumerable<AlexMusicStore.Models.Artist>

<div>

    @Html.Partial("UnderAge"));

</div>

你也可以像这样创建模型,

 public class Person
    {      
          public IEnumerable<ArtistModel> Artists{ get;  set;} //Passed to Partial
    }

    public class ArtistModel
    {      
           //your values here
    }

然后在父视图中这样显示

@model IEnumerable<AlexMusicStore.Models.Person>

<div>
@{ 
    Html.RenderPartial("~/Views/Artists/UnderAge.cshtml", Model.Artists);
}
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多