mvc4获取编辑器模板中的List索引

时间:2013-12-06 12:16:31

标签: asp.net-mvc-4 editorfor

对于我的项目,我需要知道编辑器模板中list元素的索引,以便将其赋予删除按钮。

例如我有一个模型:

public class Model
{
    public int ID { get; set; }
    public List<TemplateModel> Words { get; set; }
    public Model()
    {
    }
}

第二个模型:

  public class TemplateModel
    {
        public int secondID { get; set; }
        public string word { get; set; }
        public TemplateModel()
        {
        }
    }

一个视图:

@Html.EditorFor(m=>m.Words)

和一个模板:

    @model TemplateModel
<p>@Html.TextBoxFor(m=>m.word)</p>
<p>@Html.TextBoxFor(m=>m.secondId)</p>
<p><input type="button" name="Index should be here"></p>

是否可以从按钮列表中获取索引? mvc会自动创建像Words[index]这样的名称,但它如何传输索引并且可以使用它吗?

更新 我找到了解决方案: 在CiewContext中是一种构建元素名称的方法。所以它也可以使用它并附加一个自己的字符串。所以我在编辑器模板中实现了这个:

<input type="button" name="@ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName("Delete")"/>

在html中它看起来像

<input type="button" name="Words[0].Delete">

1 个答案:

答案 0 :(得分:0)

List<TemplateModel>的模板中尝试以下操作。

@model List<TemplateModel>

@for (var i = 0; i < Model.Count(); i++)
{
    <p>@Html.TextBoxFor(m => m[i].Word)</p>
    <p>@Html.TextBoxFor(m => m[i].SecondId)</p>
    <p><input type="button"  name="@(i)"></p>
}