2010-11-21 74 views
2

是否有可能得到EditorFor方法也渲染像EditorForModel方法那样的属性的标签和验证?asp.net mvc editorfor

现在当我使用EditorFor方法的属性(例如字符串),它只呈现文本框。

编辑

阿尔尼斯我尝试过了,有一些问题:

扩展方法应在通用HtmlHelper类的约束。从帮助程序返回字符串也导致编码的HTML。

所以我修改你的代码

public static MvcHtmlString EditorWithLabel<T>(this HtmlHelper<T> h,Expression<Func<T, object>> p) 
{ 
     return new MvcHtmlString(string.Format("{0}: {1}", h.LabelFor(p), h.EditorFor(p))); 
} 

但主要的问题是,它仅适用于当PROPERT是字符串类型。

当属性是Decimal,Int,DateTime时,会抛出一个excel。

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

+0

我很确定问题在别处。对于整数,小数点,日期时间和自定义类型也使用相同的方法。 – 2010-11-22 10:57:50

+0

可能是我使用ASP.NET MVC 3 RC(Razor)的问题? – user137348 2010-11-22 12:54:10

回答

1

我会创建自定义的HTML帮助(代码是未经测试):

public string EditorWithLabel<T>(this HtmlHelper h, 
    Expression<Func<T, object>> p){ 

    return string.Format("{0}: {1}",h.LabelFor(p),h.EditorFor(p)); 
} 

这可以用templates实现过,但我想自定义的助手更适合的。

+0

请参阅我的文章,我已编辑它。 – user137348 2010-11-21 12:31:55