C# · 1月 3, 2022

c# – 语法问题:@ Html.LabelFor(m => m.UserName)

从ASP.NET 2.0(VB)到MVC 3(C#),我对于用于View的语法感到非常困惑. @Html.LabelFor(m => m.UserName)

那m来自哪里?我唯一的猜测是,它代表了被传递到视图中的模型.我尝试将m更改为c,它仍然可以正常工作.

语法的一部分涉及“=>”更多的MVC,C#或者剃刀元素?

@R_301_1911@

Where did that m come from?

这是lambda表达式中的参数.

My only guess is that it represents the model that is being passed into the view. I tried changing the m to c and it still works fine.

那是因为这个名字没关系.它只是一个参数名称,实际上并没有引用任何现有的变量.

Is the part of the Syntax that involves the “=>” more of a MVC,C#,or Razor element?

它是C#,但是LabelFor使用编译器翻译m => m.UserName来提取构建标签所需的内容.

这是一个非常深刻的错综复杂的课题.我建议你找到一本你很舒服的书(例如,深度C#在这个问题上非常好)了解更多.你想阅读关于lambda表达式和表达式树.