2009-03-05 148 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是開源的,所以你可以儘可能多地挖掘你需要的東西。