首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC 2强类型htmlhelper,索引

ASP.NET MVC 2强类型htmlhelper,索引
EN

Stack Overflow用户
提问于 2010-01-19 11:55:38
回答 2查看 1.6K关注 0票数 3
代码语言:javascript
复制
public class Foo { public bool Checked {get;set;}}

查看:

代码语言:javascript
复制
<viewdata model="Foo[] fooList" />
<for each="var f in fooList">
    ${Html.CheckBoxFor(x=>x[fIndex].Checked)}
</for>

将产出:

代码语言:javascript
复制
<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=>

代码语言:javascript
复制
 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;
            }
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-26 09:10:03

基于表达式的帮助程序理解索引的能力还没有出现在产品中。它将出现在下一个预览版中(无论在MVC 2 RC之后出现什么)。见http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=4970

票数 1
EN

Stack Overflow用户

发布于 2010-01-19 14:01:28

使用允许指定html属性的CheckBoxFor重载:

代码语言:javascript
复制
CheckBoxFor(TModel)(HtmlHelper(TModel), Expression(Func(TModel, Boolean)), IDictionary(String, Object))

例如,

代码语言:javascript
复制
${Html.CheckBoxFor(x => x[fIndex].Checked, new { id = "foo" + fIndex) })}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2093216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档