Как лучше всего избежать этого?
Используя шаблон отображения:
<div id="center_box">
<div class="top">
<div class="head">
<h3></h3> --
</div>
<ul id="center_items_rb">
<li class="checked" onclick="javascript:SelectCenterItem(this, 1);"></li>
<li class="not_checked" onclick="javascript:SelectCenterItem(this, 2);"></li>
<li class="not_checked" onclick="javascript:SelectCenterItem(this, 3);"></li>
<li class="not_checked" onclick="javascript:SelectCenterItem(this, 4);"></li>
</ul>
</div>
<div class="clear">
</div>
<div class="pic">
@Html.DisplayFor(x => x.TopBenefits)
</div>
</div>
и внутри соответствующего шаблона отображения, который будет автоматически отображаться длякаждый элемент коллекции TopBenefits
(~/Views/Shared/DisplayTemplates/TopBenefit.cshtml
)
@model TopBenefit
<div id="center_item_@(Model.BenefitID)">
@Html.Image("content/Images/@(Model.BenefitImage)", "")
<div class="line">
<div class="right">
<h2>
@string.IsNullOrEmpty(Model.Description)
? @Model.Description.Substring(0, 100) + "..."
: @System.Configuration.ConfigurationManager.AppSettings["NoDescriptionBenefit"]
</h2>
</div>
<div class="clear">
</div>
</div>
</div>
Обратите внимание, что важно имя и расположение шаблона отображения.Он должен быть расположен в ~/Views/Shared/DisplayTemplates
, если он предназначен для повторного использования между несколькими контроллерами и внутри ~/Views/SomeController/DisplayTemplates
, если он действительно специфичен для данного контроллера и должен называться в качестве типа элементов свойства коллекции.