我无法让嵌套的DisplayForModel工作,我已经尝试了一切。所有显示模板都在正确的DisplayTemplates文件夹中。
评级文件永远不会被调用,但是如果我@Html.DisplayFor(x => x.Likes, "Ratings")
它会正确调用它,但显然只通过likes属性,任何人都知道这里发生了什么?
索引文件,工作正常:
@model IList<UploadedSongViewModel>
<section id="music-grid">
<div class="container">
@Html.DisplayForModel() //Works fine
</div>
</section>
UploadedSongViewModel模板:
@model UploadedSongViewModel
<div class="col-md-5ths col-xs-6">
@Html.DisplayForModel("Ratings") //Never calling the ratings display template
</div>
评级文件:
<span class="like-percentage" data-likes="@Model.Likes" data-dislikes="@Model.Dislikes">
<i class="fa fa-thumbs-up" data-toggle="tooltip" data-placement="bottom" title="Like percentage">
</i>
</span>
答案 0 :(得分:1)
从不调用评级显示模板
这是设计上的。 MVC引擎通过设置TemplateInfo.Visited()
方法按类型标记它呈现的每个对象。如果它已经访问过该模型,则它不会再次访问(以避免堆栈溢出/无限循环)。只需将其更改为以下内容即可(无法测试atm)。
@model UploadedSongViewModel
<div class="col-md-5ths col-xs-6">
@Html.DisplayFor(m => m, "Ratings")
</div>