我正在阅读 Microsoft Docs 上的Razor教程,并遇到了 HTML 帮助程序中使用的 lambda 表达式:@Html.DisplayNameFor(model => model.Movie[0].Title))Movie 是 IList<Movie> 类型,其中 Movie 是教程中创建的类。作者指出:“ DisplayNameFor HTML Helper检查lambda 表达式中引用的Title属性以确定显示名称。检查lambda 表达式而不是求值。这意味着当 Movie[0] 为 null 或为空时没有访问冲突。”我从直觉上理解检查,但这与说有什么不同:Console.WriteLine(Movie[0].Title)如果 HTML 帮助程序看到一个空列表,则没有问题,但如果控制台方法看到一个空列表,则会抛出异常。我能猜测这是如何工作的唯一方法是在幕后有一个 try / catch 在工作。
2 回答
侃侃无极
TA贡献2051条经验 获得超10个赞
显示名称表示属性本身的名称,即"Title",或Display属性上的属性中定义的字符串值,如果该属性有一个,即:
public class Movie
{
[Display(Name = "Movie Title")]
public string Title { get; set; }
}
我们可以看到它并不关心Title属性的value,因此它永远不需要评估它,因此如果电影为 null 它不会抛出。
- 2 回答
- 0 关注
- 505 浏览
添加回答
举报
0/150
提交
取消