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中包含索引。
如果我想为每个复选框添加标签(因为所有的in都是相同的),就会出现问题。
有什么好办法吗?
来自MVC source=>
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;
}
}发布于 2010-01-26 09:10:03
基于表达式的帮助程序理解索引的能力还没有出现在产品中。它将出现在下一个预览版中(无论在MVC 2 RC之后出现什么)。见http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=4970。
发布于 2010-01-19 14:01:28
使用允许指定html属性的CheckBoxFor重载:
CheckBoxFor(TModel)(HtmlHelper(TModel), Expression(Func(TModel, Boolean)), IDictionary(String, Object))例如,
${Html.CheckBoxFor(x => x[fIndex].Checked, new { id = "foo" + fIndex) })}https://stackoverflow.com/questions/2093216
复制相似问题