2013-08-03 74 views
3

使用EditorTemplates(With Lists)計算當前列表索引值有什麼方法嗎?例如,在此編輯器中,模板在EditorTemplates中保持計數

@model myModel 

<div class="email-box"> 
    @Html.TextBoxFor(x=>x.Email) 
</div> 

我可以計算列表中的索引嗎?

編輯====

查看

@model IEnumerable<myModel> 

@Html.EditorForModel() 

編輯模板

@model myModel 
<div class="email-box" rel="@ViewBag.Index"> 
    @Html.TextBoxFor(x => x.Email) 
</div> 

回答

1

自定義編輯器模板可以接受的值從HTML擴展方法調用的時候,這些值被添加到ViewBag專門爲這一觀點。您可以使用此元素的索引發送到該視圖

在父視圖

@{ 
    ViewBag.Title = "MyView"; 
    var index = 0; 
} 

<h2>My View</h2> 

@foreach (var item in Model) 
{ 
    <div> 
     @Html.EditorFor(m => item, new { Index = index++ }) 
    </div> 
} 

在編輯器模板

@Html.TextBoxFor(m => string.Format("({0} - {1}", ViewBag.Index, m.Description) 
+0

我已經更新了這個問題,這將起作用,但不是在我從未遍歷模型中的對象的情況下。 – LiamB

1

其實我已經解決了這個同時環顧可用的野外選項。

ViewData.TemplateInfo.HtmlFieldPrefix 

返回[0],[1]等等。可以修剪它,我們有ID。