当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc-3 – ASP.NET MVC强类型HTML帮助程序

来源:互联网 收集:自由互联 发布时间:2021-06-24
让我们走这一行:@ Html.LabelFor(m = m.UserName) 这是在这一行的页面上:@model CurrencyMvc.Models.RegisterModel 我假设当页面视图呈现LabelFor时,会自动调用LabelFor并引用所描述的模型,并且Lambda函数告
让我们走这一行:@ Html.LabelFor(m => m.UserName)
这是在这一行的页面上:@model CurrencyMvc.Models.RegisterModel

我假设当页面视图呈现LabelFor时,会自动调用LabelFor并引用所描述的模型,并且Lambda函数告诉它如何从模型中获取所需的信息?

我不清楚为什么我们在传递实际值时传递函数,例如m.Username.

哦,当这个帮手叫“m”来自哪里?

I assume that when the page view renders LabelFor is called
automatically with a reference to the model described, and that the
Lambda function tells it how to get the info it needs from the model?

我不完全确定我对这部分你的意思是什么,我想你的意思是@LabelForknows如何使用哪种型号?

是的,如果你看看这样的syntax:

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

您可以看到第一个参数以此开头,这使其成为一种扩展方法.当您添加行@model CurrencyMvc.Models.RegisterModel时,此HtmlHelper< TModel>成为您的RegisterModel.

Its not clear to me why we’re passing a function in when we could pass
the actual value e.g. m.Username.

大多数时候,“lambda表达式”仅仅是Func< T>.但是使用剃刀@Html.xfor(例如@Html.LabelFor),你传入一个Expression<Func<TModel, TValue>>,这是一个lambda表达式的树数据结构.用外行人的话说;一种未编译的Func.

如果您传入m.Username,则该方法只会包含“Dale Burrell”.但是,例如,html文本框生成为

<input type="text" name="Username" value="Dale Burrell">

如您所见,它实际上需要m.Username变量名

Oh and when this helper is called where does “m” come from?

那只是一个变量.就像foreach(数据集中的var m){}“m来自哪里?” – 你做了.您可以用任何东西替换m

网友评论