Asp.net mvc ASP.NET MVC 2强类型htmlhelper,索引

Asp.net mvc ASP.NET MVC 2强类型htmlhelper,索引,asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,视图: 使用允许您指定html属性的重载复选框: while (part != null) { if (part.NodeType == System.Linq.Expressions.ExpressionType.MemberAccess) { MemberExpression memberExpressionPart = (MemberExpression)part; nameParts.Push(me

视图:


使用允许您指定html属性的重载复选框:

 while (part != null) {
            if (part.NodeType == System.Linq.Expressions.ExpressionType.MemberAccess) {
                MemberExpression memberExpressionPart = (MemberExpression)part;
                nameParts.Push(memberExpressionPart.Member.Name);
                part = memberExpressionPart.Expression;
            }
            else {
                //arghhhh... [index] != MemberAccess :(
                break;
            }
        }
比如说,

CheckBoxFor(TModel)(HtmlHelper(TModel), Expression(Func(TModel, Boolean)), IDictionary(String, Object))

基于表达式的助手理解索引的能力还不在产品中。它将出现在下一个预览版本中(MVC2RC之后的任何版本)。请参阅。

这不正确。在这种情况下,让我问一下,如果我无法从视图模型中获取id而不使用硬编码字符串,那么
CheckBoxFor
“强类型”帮助器方法的好处是什么?这与使用
${Html.CheckBox(“foo”+fIndex,m.AllCatalogs[i].Checked)}
的方法相同,后者看起来更好。
<input id="Checked" name="Checked" type="checkbox" value="true" />
<input name="Checked" type="hidden" value="false" />

<input id="Checked" name="Checked" type="checkbox" value="true" />
<input name="Checked" type="hidden" value="false" />

<input id="Checked" name="Checked" type="checkbox" value="true" />
<input name="Checked" type="hidden" value="false" />
 while (part != null) {
            if (part.NodeType == System.Linq.Expressions.ExpressionType.MemberAccess) {
                MemberExpression memberExpressionPart = (MemberExpression)part;
                nameParts.Push(memberExpressionPart.Member.Name);
                part = memberExpressionPart.Expression;
            }
            else {
                //arghhhh... [index] != MemberAccess :(
                break;
            }
        }
CheckBoxFor(TModel)(HtmlHelper(TModel), Expression(Func(TModel, Boolean)), IDictionary(String, Object))
${Html.CheckBoxFor(x => x[fIndex].Checked, new { id = "foo" + fIndex) })}