gpt4 book ai didi

c# - Asp.net razor View - lambda 表达式输入

转载 作者:行者123 更新时间:2023-11-30 17:44:24 25 4
gpt4 key购买 nike

我在做this MVC 教程,我不理解 @Html.DisplayNameFor 方法中 lambda 表达式中的输入参数。下图有

@Html.DisplayNameFor(model=> model.Title)

但是即使我把它改成

它也能正常工作

@Html.DisplayNameFor(something => something.Title)

所以我的问题是如何声明变量 modelsomething 以及如何填充值?我所看到的只是它们只是作为 lambda 表达式的输入提供。

Index view for Movies controller

最佳答案

查看方法的实际签名 ( from MSDN documentation )

public static MvcHtmlString DisplayFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
string templateName
)

DisplayFor实际上是一种扩展方法,将在 HtmlHelper<TModel> 上可用实例,其中 TModel是模型的类型,由通过 @Model 给出的类型定义指示。

如您所见,第二个参数是一个 Expression<Func<TModel, TValue>> .这意味着,在这样的调用中:@Html.DisplayNameFor(x => x.Foo) , x将始终与您使用 @model 声明的类型相同,无论您使用什么名称。

现在,您的问题是:如何填充这些值?好吧,既然你已经声明你想要一个 IEnumerable<MvcMovie.Models.Movie> 类型的模型, 你现在可以在你的代码后面做这样的事情

public ActionResult MoviesView()
{
var model = new List<MvcMovie.Models.Movie>()
{
new Movie("Casablanca"),
new Movie("Fight Club"),
new Movie("Finding Nemo")
};

return View(model);
}

这将是“填充”值的方式。 Expression<Func<TModel, TValue>>期望一个 IEnumerable<MvcMovie.Models.Movie>模型,并且通过此调用,您已经提供了它。

关于c# - Asp.net razor View - lambda 表达式输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com