m.SomeProperty)?-6ren"> m.SomeProperty)?-例如,在 MVC 应用程序中,我可以使用 Html 助手来创建这样的标签: @Html.LabelFor(m => m.ProductName) 我没有在任何地方声明变量“m”,但 IDE 会自动找出-6ren">
sách gpt4 ai đã đi

c# - c# 如何找出 "m"来自 (m => m.SomeProperty)?

In lại Tác giả: Space Dog 更新时间:2023-10-30 00:06:18 29 4
mua khóa gpt4 Nike

例如,在 MVC 应用程序中,我可以使用 Html 助手来创建这样的标签:

@Html.LabelFor(m => m.ProductName)

我没有在任何地方声明变量“m”,但 IDE 会自动找出我要做什么。有点令人不安的是,IDE 比我更了解我的代码。我想解决这个问题。

我主要想知道它是如何知道如何引用我的模型的。

编辑:感谢您的所有回答。

因此,“Html”是 HtmlHelper 的一个实例。 “Html”是 ViewPage 基类的成员。它的值在 ViewPage 基类的 InitHelpers() 方法中设置。 HtmlHelper 构造函数将 ViewPage 的 ViewContext 作为参数。 ViewContext 知道我使用的是什么模型。 LabelFor 是 HtmlHelper 类的扩展方法。这就是 lambda 表达式知道如何引用我的模型的原因。

点是相连的。谢谢!

1 Câu trả lời

您需要阅读有关 lambda 的内容,但发生的事情是您将函数指针传递给 LabelFor方法。因为Html是强类型 ( HtmlHelper ) 和 LabelFor声明为 Func ,编译器(和 IDE)可以确定 tôi是您的模型类型的一个实例,因此为成员提供了很好的 IDE 下拉菜单。

有时人们发现比较您可以使用的其他语法选项很有帮助。例如,这同样有效:

Html.LabelFor(SomePropertyMethod);

...

string SomePropertyMethod(TYourModelType model)
{
return model.SomeProperty;
}

关于c# - c# 如何找出 "m"来自 (m => m.SomeProperty)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4409566/

29 4 0
Bài viết được đề xuất: python - 将多个对象的值合并到一个字典中
Bài viết được đề xuất: python - 检查 python 中(某种)大数字的可分性
Bài viết được đề xuất: python - 如何计算点击率
Bài viết được đề xuất: c# - 更改 AppSetting 对应用程序没有影响
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com