ASP.NET MVC 2强类型的HtmlHelper,索引 [英] ASP.NET MVC 2 strongly typed htmlhelper, indexes

查看:87
本文介绍了ASP.NET MVC 2强类型的HtmlHelper,索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 公共类Foo {公共BOOL经过{获取;集;}}

查看:

 <可视数据模型=富[] fooList/>
<用于每=中fooList变种F>
    $ {H​​tml.CheckBoxFor(X =&X的催化剂[fIndex] .Checked)}
< /为>

将输出:

 <输入ID =选中NAME =选中类型=复选框VALUE =真/>
<输入名称=选中类型=隐藏值=FALSE/><输入ID =选中NAME =选中类型=复选框VALUE =真/>
<输入名称=选中类型=隐藏值=FALSE/><输入ID =选中NAME =选中类型=复选框VALUE =真/>
<输入名称=选中类型=隐藏值=FALSE/>

问题是, System.Web.Mvc.Ex pressionHelper.GetEx pressionText 不包括ID /名称索引。

这会导致问题的情况下,我想添加一个标签为每个复选框(因为所有id`s都是一样的)。

任何想法如何正确处理呢?


从MVC源=>

 同时(部分!= NULL){
            如果(part.NodeType == System.Linq.Ex pressions.Ex pressionType.MemberAccess){
                MemberEx pression memberEx pressionPart =(MemberEx pression)的一部分;
                nameParts.Push(memberEx pressionPart.Member.Name);
                部分= memberEx pressionPart.Ex pression;
            }
            其他{
                // arghhhh ... [指数]!= MemberAccess :(
                打破;
            }
        }


解决方案

恩$ P $基于pssion-佣工了解指标的能力不是在产品还没有。这将是在未来的preVIEW发布(MVC 2 RC以后无论发生什么事)。请参见 HTTP://aspnet.$c$cplex.com/WorkItem/ View.aspx?WorkItemId = 4970

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>

Will output:

<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" />

Problem is that System.Web.Mvc.ExpressionHelper.GetExpressionText does not include index in id/name.

That leads to problems in case I want to add a label for every checkbox (because all id`s are the same).

Any ideas how to handle this properly?


From the 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;
            }
        }

解决方案

The ability of the expression-based helpers to understand indexes isn't in the product yet. It will be in the next preview release (whatever comes after MVC 2 RC). See http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=4970.

这篇关于ASP.NET MVC 2强类型的HtmlHelper,索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆