ASP.Net MVC ActionLink如何工作?

Pal*_*ani 3 asp.net-mvc

我正在尝试使用NHaml作为视图引擎为.Net 2.0编写自己的LightWeight MVC .

在ASP.Net 3.5 MVC中,我们使用View文件通过代码片段指定链接.

Html.ActionLink("Add Product","Add");
Run Code Online (Sandbox Code Playgroud)

在MVC二进制文件中,没有匹配此调用的函数.

我只发现:

(在System.Web.Mvc.Html.LinkExtensions类中)

public static string ActionLink(this System.Web.Mvc.HtmlHelper htmlHelper, 
   string linkText, string actionName)
Run Code Online (Sandbox Code Playgroud)

有更多类似的静态类,如FormExtensions,InputExtensions等.

ASP.Net MVC如何处理它?它是否为Html.ActionLink生成动态代码?

Inf*_*ris 5

ActionLink方法是扩展方法(因此this在第一个参数的类型之前).这意味着您可以将此方法用作所有HtmlHelper实例上的实例方法,即使它未定义HtmlHelper.

Html是类型视图中的属性HtmlHelper.这意味着您可以ActionLink在其上使用extensionmethod.

ActionLink方法本身只会生成一个链接字符串(关于其参数)并返回该字符串.