Как работает ASP.Net MVC ActionLink? - PullRequest
3 голосов
/ 05 марта 2009

Я пытаюсь написать свой собственный LightWeight MVC для .Net 2.0, используя NHaml в качестве механизма просмотра.

В 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)

Есть более похожие статические классы, такие как FormExtensions, InputExtensions и т. Д.

Как ASP.Net MVC справляется с этим? Генерирует ли он динамический код для Html.ActionLink?

Ответы [ 2 ]

5 голосов
/ 05 марта 2009

Метод ActionLink является методом расширения (следовательно, this перед типом первого параметра). Это означает, что вы можете использовать этот метод как метод экземпляра во всех HtmlHelper экземплярах, даже если он не определен в HtmlHelper.

Html - это свойство в представлении типа HtmlHelper. Это означает, что вы можете использовать метод расширения ActionLink.

Сам метод ActionLink не делает ничего, кроме как генерирует строку ссылки (относительно ее аргументов) и возвращает эту строку.

0 голосов
/ 05 марта 2009

Вы проверяли код на Codeplex? MVC Framwork имеет открытый исходный код, поэтому вы можете копать столько, сколько вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...