Вызовите одного помощника Razor из другого - PullRequest
3 голосов
/ 03 сентября 2011

Мне нужно создать вторую перегрузку помощника Razor и вызвать одного помощника из другого (с некоторыми конкретными параметрами).Есть ли способ реализовать это?

1 Ответ

6 голосов
/ 03 сентября 2011

Конечно:

using System.Web.Mvc;
using System.Web.Mvc.Html;

public static class ActionLinkExtensions
{
    public static IHtmlString MyActionLink(this HtmlHelper html)
    {
        // call the base ActionLink helper:
        return html.ActionLink("some text", "someAction");
    }
}

, а затем, по вашему мнению:

@Html.MyActionLink()

Если вы говорите о @helper помощниках Razor, вам нужно передать экземпляр HtmlHelperв качестве аргумента, потому что он недоступен в контексте помощника:

@helper MyActionLink(HtmlHelper html)
{
    @html.ActionLink("some text", "someAction")
}

, а затем:

@MyActionLink(Html)

Лично я предпочитаю первый подход, так как он не зависит от движка и может быть перенесен черезлюбые другие механизмы просмотра, которые вам нравятся, в то время как вторая связана с Razor, и если завтра Microsoft изобрел механизм представления Blade, вам придется переписать большую часть кода.

...