错误行;
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<T, object>(ColumnProperty, pHtml.ViewData);
模型
public class MenuAuths : EntityBase
{
[BsonIgnoreIfNull]
[BsonRepresentation(BsonType.ObjectId)]
public string MenuId { get; set; }
[BsonDefaultValue(false)]
public bool AllowNew { get; set; }
}
CSHTML;
new Column<LsDataModels.MenuAuths> { ColumnProperty = c => c.MenuId },
new Column<LsDataModels.MenuAuths> { ColumnProperty = c => c.AllowNew},
这一行工作new Column<LsDataModels.MenuAuths> { ColumnProperty = c => c.MenuId }
但是这一行有一个错误new Column<LsDataModels.MenuAuths> { ColumnProperty = c => c.AllowNew},
我可以尝试更改属性类型bool?
,bool
,Nulable<bool>
,但错误仍在继续。我也删除了[BsonDefaultValue(false)]
属性没有任何变化。
我该怎么办?
编辑错误模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。
答案 0 :(得分:0)
我找到了这个问题的解决方案。
我使用PropertyInfo
我在Expression<Func<T, dynamic>>
public static PropertyInfo GetProperty<T>(this Expression<Func<T, dynamic>> expression)
{
MemberExpression memberExpression = null;
if (expression.Body.NodeType == ExpressionType.Convert)
{
memberExpression = ((UnaryExpression)expression.Body).Operand as MemberExpression;
}
else if (expression.Body.NodeType == ExpressionType.MemberAccess)
{
memberExpression = expression.Body as MemberExpression;
}
if (memberExpression == null)
{
throw new ArgumentException("Not a member access", "expression");
}
return memberExpression.Member as PropertyInfo;
}
并更改此行
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<T, object>(ColumnProperty, pHtml.ViewData);
到
PropertyInfo pi = FieldProperty.GetProperty<T>();
我可以访问PropertyInfo