最近在.Net的Razor引擎中遇到了这种奇怪的行为。
我们在ViewModel中有一个属性,如
bool? Property1 { get; set; }
但如果我们在if语句中有
@if(Model.Property1.HasValue)
我们得到一个bool没有Method HasValue错误。但以下作品
@{
var prop1 = Model.Property1;
}
@if(prop1 != null)
有人可以解释WTF正在发生,因为我希望HasValue能够在第一个场景中工作。在评估表达式之后,应该将其转换为布尔值,而不是之前的表达式。