我有一个类似于此的MVC模型
public class Model { public string Name {get;set;} public int Number {get;set;} }
我收到错误
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.
尝试为数字字段创建标签时,将模型lambda表达式存储在变量中.
例如,在我看来,我有:
@Html.LabelFor(model => model.Name) // Works fine @Html.LabelFor(model => model.Number) // Works fine @{ Expression> nameExpression = model => model.Name; Expression > numberExpression = model => model.Number; } @Html.LabelFor(nameExpression) // Works fine @Html.LabelFor(numberExpression) // Error!
我注意到使用lambda表达式的调试器model => Convert(model.Number)
,而不是model => model.Number
,但这只发生在我可以告诉的值类型中,因为我已经使用整数(可空和非可空)和DateTime
对象进行了测试.似乎NodeType
lambda表达式是Convert
,对于字符串来说Member access
.
我知道这个错误本身的原因,但我不知道是什么原因导致编译器来评估model=>model.Number
到model => Convert(model.Number)
.
谢谢!