如何获取动态/通用@Html.DisplayNameFor(o=>;o.myProperty)
本文关键字:gt myProperty DisplayNameFor 通用 何获取 获取 动态 @Html | 更新日期: 2023-09-27 18:25:41
我尝试在不直接使用模型视图的情况下使用DisplayNameFor,但使用了类型为Expression<Func<TModel, TValue>>
的变量
我认为使用以下功能可以解决
//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);
}