小编flo*_*gyi的帖子

MVC4模板只能用于字段访问

我有一个类似于此的MVC模型

public class Model
{
     public string Name {get;set;}
     public int Number {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我收到错误

模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.

尝试为数字字段创建标签时,将模型lambda表达式存储在变量中.

例如,在我看来,我有:

@Html.LabelFor(model => model.Name) // Works fine
@Html.LabelFor(model => model.Number) // Works fine

@{
    Expression<Func<Offer, object>> nameExpression = model => model.Name;
    Expression<Func<Offer, object>> numberExpression = model => model.Number;
}
@Html.LabelFor(nameExpression) // Works fine
@Html.LabelFor(numberExpression) // Error!
Run Code Online (Sandbox Code Playgroud)

我注意到使用lambda表达式的调试器model => Convert(model.Number),而不是model => model.Number,但这只发生在我可以告诉的值类型中,因为我已经使用整数(可空和非可空)和DateTime对象进行了测试.似乎NodeTypelambda表达式是Convert,对于字符串来说Member access.

我知道这个错误本身的原因,但我不知道是什么原因导致编译器来评估model=>model.Numbermodel => Convert(model.Number).

谢谢!

c# asp.net-mvc lambda razor asp.net-mvc-4

6
推荐指数
1
解决办法
996
查看次数

标签 统计

asp.net-mvc ×1

asp.net-mvc-4 ×1

c# ×1

lambda ×1

razor ×1