2012-01-15 100 views
3

有没有人写过或有过一种方法来调用EditorFor使用属性名称而不是使用表达式。MVC EditorFor属性名称

EditorFor("Code") 

,而不是

EditorFor(_ => _.Code) 

我想要写的东西更通用。通过创建表达式来调用EditorFor是令人厌烦的,我不相信没有更好的方法。

这不起作用。

var root = Expression.Parameter(Model.GetType(), "_");     
var expr = Expression.Lambda(Expression.MakeMemberAccess(root, property), root); 
var ef = (Expression<Func<Product, string>>) expr; 
var method = typeof(EditorExtensions).GetMethod("EditorFor", BindingFlags.Public | BindingFlags.Static, null, new[] {typeof(HtmlHelper<>), typeof(Expression<Func<,>>)}, null); 

方法总是为空,我试了很多东西。

干杯

回答

0

因此,让我得到这个直。你想要使用明确设计用于使用表达式的方法,目的是为了强制类型化..而你希望它不被强类型化?

为什么不简单地使用非强类型的版本呢?

“For”方法的目的是使它们具有强类型。这很令人困惑,为什么你想使用一个For类型,但不能用它来设计它。

+0

我正在寻找一个非强类型的版本。 我不想自己编写或者自己编写所有的模板(这是内部的)。 – Jim 2012-01-21 04:58:00