Расширение помощников HTML MVC3 для включения пользовательских атрибутов HTML5 - PullRequest
2 голосов
/ 07 июня 2011

Я знаю, что могу добавить настраиваемые атрибуты к любому данному помощнику, используя анонимный тип с атрибутом и значением, указанным для его представления в качестве атрибута HTML5, однако я стремлюсь добиться того же для всех помощников HTML в данном представлении, вызванномвнешне указанный помощник.Подобно той же функциональности, которую вы получаете от ненавязчивого помощника JavaScript, где он отображает правила проверки в контексте атрибутов поля формы.

Кто-нибудь знает, существует ли «простой» способ внедрить эти настройки впомощники, или мне нужно будет расширить каждый из помощников независимо?

Приветствия

1 Ответ

1 голос
/ 07 июня 2011

Вы не можете расширить все методы из одной централизованной точки (напишите код, который расширит все ваши вспомогательные методы html, добавив перегрузку с дополнительным параметром 'htmlAttributes') - возможно, это возможно при использовании генерации методов IL, но это сложно способ).

Каждое расширение должно быть перегружено вашим вспомогательным методом html, и вы можете реализовать его, как в примере:

public static class HtmlExtensions
{
    public static string MyPager(this HtmlHelper html, string parameter1, int parameter2)
    {
        var builder = new TagBuilder("div");
        GenerateMyPagerBody(builder , parameter1, parameter2); // insert body into tag
        return builder.ToString(TagRenderMode.SelfClosing);
    }

    public static string MyPager(this HtmlHelper html, string parameter1, int parameter2, object htmlAttributes)
    {
        var builder = new TagBuilder("div");
        GenerateMyPagerBody(builder , parameter1, parameter2);
        builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        return builder.ToString(TagRenderMode.SelfClosing);
    }
}
...