C# 如何获取动态/通用@Html.DisplayNameFor(o=>o.myProperty)
我尝试在不直接使用模型视图的情况下使用DisplayNameFor,但使用了Expression类型的变量 我认为使用下面的函数可以解决这个问题C# 如何获取动态/通用@Html.DisplayNameFor(o=>o.myProperty),c#,asp.net-mvc,html-helper,C#,Asp.net Mvc,Html Helper,我尝试在不直接使用模型视图的情况下使用DisplayNameFor,但使用了Expression类型的变量 我认为使用下面的函数可以解决这个问题 //based on http://stackoverflow.com/questions/16208214/construct-lambdaexpression-for-nested-property-from-string public static LambdaExpression createExpression(Type ty
//based on http://stackoverflow.com/questions/16208214/construct-lambdaexpression-for-nested-property-from-string
public static LambdaExpression createExpression(Type type, string propertyName)
{
var param = Expression.Parameter(type, "x");
Expression body = param;
foreach (var member in propertyName.Split('.'))
{
body = Expression.PropertyOrField(body, member);
}
return Expression.Lambda(body, param);
}
但是没有。。。
当我在我的视野中使用
@ {
Model1 model1 = new Model1() { id = 1, code = "Code1", isActive = true, name = "Name1" };
System.Linq.Expressions.LambdaExpression exp = Utils.createExpression(model1.GetType(), "id");
}
@Html.DisplayNameFor(exp)
编辑:它抛出一个CS0411编译错误
有什么想法吗 试试看
public static LambdaExpression CreateExpression(Type type, string propertyName)
{
ParameterExpression parameter = Expression.Parameter(type, "x");
MemberExpression propertyAccess = Expression.Property(parameter, propertyName);
return Expression.Lambda(propertyAccess, parameter);
}
我在@Html.DisplayNameForexp行上遇到了相同的编译错误,原因是签名与System.Web.Mvc.htmlhelp、System.Linq.Expressions.expression不匹配。我已编辑了您的标题。请看,如果共识是否定的,他们不应该这样做。你能提供错误消息吗?是的,用法语,但你有错误代码:CS0411:Les arguments de type pour la méthode'System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameForSystem.Web.Mvc.HtmlHelper,系统。Linq。表达式。表达式“使用一方的利益”。Essayez de spécifier les arguments de type de façon explicite.英文版:Error CS0411,方法'System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameForSystem'的类型参数。无法从使用中推断Web.Mvc.HtmlHelper、System.Linq.Expressions.Expression