【发布时间】:2018-06-11 17:28:30
【问题描述】:
考虑一下 Razor 页面的以下代码隐藏文件。
public class IndexModel : PageModel
{
MovieContext Context { get; }
public IndexModel(MovieContext context)
{
Context = context;
}
public IList<Movie> Movies { get; set; }
public async Task OnGetAsync()
{
Movies = await Context.Movie.ToListAsync();
}
}
修剪后的Razor页面如下
@page
@model IndexModel
@foreach (var item in Model.Movies)
{
@Html.DisplayFor(modelItem =>item.Title)
}
问题
仅出于学术目的,假设我被限制不能在 lambda 表达式中捕获外部变量。
为什么我不能使用
@Html.DisplayFor(modelItem => modelItem.Movies[modelItem.Movies.IndexOf(item)].Title)
而不是
@Html.DisplayFor(modelItem =>item.Title)
?
【问题讨论】:
-
你为什么要这样做?
-
@Shyju:因为 lambda 表达式参数是框架传递的
IndexModel类型。 -
但是您只关心打印项目的 Title 属性。仪式?为什么不使用更简单的版本。
-
@Shyju:它仅用于学术目的,为什么它不起作用。并提高我的知识。
-
原因表达式不是代表。表达式描述代码,委托是代码
标签: c# razor lambda asp.net-core