public class Foo { public bool Checked {get;set;}}
Вид:
<viewdata model="Foo[] fooList" />
<for each="var f in fooList">
${Html.CheckBoxFor(x=>x[fIndex].Checked)}
</for>
Будет выводить:
<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" />
Проблема в том, что System.Web.Mvc.ExpressionHelper.GetExpressionText
не включает индекс в id / name.
Это приводит к проблемам в случае, если я хочу добавить метку для каждого флажка (поскольку все идентификаторы одинаковы).
Есть идеи, как с этим справиться?
Из источника MVC =>
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;
}
}