MVC嵌套DisplayForModel不起作用

时间:2016-03-09 21:11:44

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

我无法让嵌套的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>

1 个答案:

答案 0 :(得分:1)

  

从不调用评级显示模板

这是设计上的。 MVC引擎通过设置TemplateInfo.Visited()方法按类型标记它呈现的每个对象。如果它已经访问过该模型,则它不会再次访问(以避免堆栈溢出/无限循环)。只需将其更改为以下内容即可(无法测试atm)。

@model UploadedSongViewModel
<div class="col-md-5ths col-xs-6">
  @Html.DisplayFor(m => m, "Ratings") 
</div>