在EditorTemplates中保持计数

时间:2013-08-03 18:28:20

标签: c# asp.net-mvc

使用EditorTemplates(With Lists)计算当前列表索引值是否有办法?例如,在此编辑器模板中

@model myModel

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

我可以找出列表中的索引吗?

EDIt ====

查看

 @model IEnumerable<myModel>

 @Html.EditorForModel()

编辑模板

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

我实际上在查看可用的字段选项时解决了这个问题。

ViewData.TemplateInfo.HtmlFieldPrefix

返回[0],[1]等。可以减少它,我们有ID。