案件:
我有使用X类的编辑器模板显示的X类项列表。

问题:
如何在编辑器模板的内部获取正在处理的项目的索引?

最佳答案

我一直在使用此HtmlExtension,它仅返回所需的迭代ID。基本上,它是ViewData.TemplateInfo.HtmlFieldPrefix上的正则表达式,用于捕获最后一个数字。

public static class HtmlExtensions
    public static MvcHtmlString Index(this HtmlHelper html)
    {
        var prefix = html.ViewData.TemplateInfo.HtmlFieldPrefix;
        var m = Regex.Match(prefix, @".+\[(\d+)\]");
        if (m.Success && m.Groups.Count == 2)
            return MvcHtmlString.Create(m.Groups[1].Value);
        return null;
    }
}


可以在EditorFor-template中使用,例如:

@Html.Index()

10-08 02:17