我正在开发web api,我们已经创建了HtmlLHelper类,我看到的声明如下:
public static string GetCountryDomain(this System.Web.Mvc.HtmlHelper htmlHelper, Area area)
{
//body
}
在我的控制器中我想调用上面的功能。它需要2个参数。
HtmlHelper.GetCountryDomain(area_id);
有人可以解释为了调用上面的函数需要传递的第一个参数吗?
答案 0 :(得分:1)
this
关键字标记了一种扩展方法。有两种方法可以调用它:
HtmlHelper
或static
方法。第一种方式更常见(毕竟,这是使方法成为扩展的重点)
// Prepare the parameters
HtmlHelper helper = ...
Area area = ...
// Call the function
string countryDomain = helper.GetCountryDomain(area);
答案 1 :(得分:1)
这是一种扩展方法。您可以正常调用它,在这种情况下,您需要将一个System.Web.Mvc.HtmlHelper实例和一个int传递给静态方法。由于它是静态方法,因此您还需要指定类:
Area area = HtmlHelperExtensions.GetAreaById(htmlHelper, i);
但也可以调用扩展方法,就好像它们是第一个参数的实例方法:
Area area = htmlHelper.GetAreaById(i);
这只是语法糖;实际发生的事情是第一次电话会议。欲获得更多信息: http://msdn.microsoft.com/en-us/library/bb383977.aspx
答案 2 :(得分:0)
GetAreaById
是一种扩展方法。所以第一个参数已经是HtmlHelper
。
答案 3 :(得分:0)
你写了一个扩展方法。语法旨在模仿将方法添加到现有类。您将传递HtmlHelper
对象作为第一个参数。
http://msdn.microsoft.com/en-us/library/bb383977.aspx
您可以在视图中使用此特定类型的帮助程序类。
You can use the HtmlHelper class in a view by using the built-in
Html property of the view. For example, calling @Html.ValidationSummary()
renders a summary of validation messages.
http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper(v=vs.118).aspx
答案 4 :(得分:0)
GetAreaById
是Extension Method。您可以将其视为附加的方法"到特定类型的实例,但未在该类型的定义中定义。
此外,作为静态方法,它可以以两种方式使用:
作为this
关键字
var helper = new System.Web.Mvc.HtmlHelper();
var area = helper.GetAreaById(id);
通过将实例作为参数传递为静态方法:
var helper = new System.Web.Mvc.HtmlHelper();
var area = ClassWhereMethodIsDefined.GetAreaById(helper, id);