public class Foo { public bool Checked {get;set;}}
View :
<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中不包含索引。如果我想为每个复选框添加标签,则会导致问题(因为所有id都相同)。
有什么想法如何正确处理吗?
从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;
}
}
最佳答案
产品中还没有基于表达式的助手了解索引的功能。它将在下一个预览版本中(无论MVC 2 RC之后是什么)。参见http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=4970。
关于asp.net-mvc - ASP.NET MVC 2强类型htmlhelper,索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2093216/