2009-03-05 142 views
3

我正在尝试使用NHaml作为视图引擎,为.Net 2.0编写我自己的LightWeight MVC。ASP.Net MVC ActionLink如何工作?

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

Html.ActionLink("Add Product","Add"); 

在MVC二进制文件中没有函数来匹配此调用。

我才发现:

(在课堂上System.Web.Mvc.Html.LinkExtensions)

public static string ActionLink(this System.Web.Mvc.HtmlHelper htmlHelper, 
    string linkText, string actionName) 

还有更多类似的静态类,如FormExtensionsInputExtensions

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

回答

5

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

Html是类型HtmlHelper的视图上的一个属性。这意味着您可以使用其上的ActionLink扩展方法。

ActionLink方法本身没有什么比生成一个链接字符串(关于它的参数)并返回该字符串。

0

您是否检出了Codeplex上的code? MVC Framwork是开源的,所以你可以尽可能多地挖掘你需要的东西。