【发布时间】:2015-05-14 21:54:58
【问题描述】:
我正试图围绕 Func 代表,但似乎我不清楚。我知道 T 是一个参数 & TResult 是一个返回类型。
在 MVC 中我一直使用这个函数:
@model Products
@Html.TextBoxFor(s=>s.my_property)
现在TextBoxFor函数怎么知道传给我的参数实际上是一个“Products模型”。
下面是 TextBoxFor 模型的签名:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
IDictionary<string, Object> htmlAttributes
)
所以我的问题是,当我调用 Html.TextBoxFor(s) 时,这个方法怎么会知道“s”是“产品”模型以及 TModel 如何映射到参数“s”(知道它的产品模型和我需要退货)?
【问题讨论】:
-
您更可能使用
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)和两个参数。 -
泛型类型
TModel得到解析,因为您的视图开头可能有一个@model YourNamespace.Products语句。该语句实质上是告诉编译器使用您的模型类型调用TextBoxFor方法。至于您的第二个问题,您可能需要考虑查找Action和Func(或一般而言,C# delegates)的稍微简单的示例。 -
HtmlTextBoxFor的TModel怎么知道传给我的参数是“Products”模型?
-
因为你告诉它它将与@model Products 行一起
标签: c# asp.net-mvc razor delegates