Использование htmlAttributes для вставки дополнительного класса в мою ссылку на моем помощнике - PullRequest
0 голосов
/ 01 марта 2012

У меня есть собственный помощник html:

public static MvcHtmlString MyLink(this HtmlHelper htmlHelper, string linkText, object htmlAttributes)
{
     TagBuilder builder = new TagBuilder("a");
     builder.SetInnerText(linkText);
     builder.AddCssClass("dialogLink");
     return new MvcHtmlString(builder.ToString());
}

Иногда я хотел бы добавить некоторые атрибуты html к этой привязке.Например, я хотел бы добавить дополнительный класс к этой ссылке.Я пытаюсь это:

public static MvcHtmlString MyLink(this HtmlHelper htmlHelper, string linkText, object htmlAttributes)
{
     TagBuilder builder = new TagBuilder("a");
     builder.SetInnerText(linkText);
     builder.AddCssClass("dialogLink");

     if (htmlAttributes != null)
         builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));

     return new MvcHtmlString(builder.ToString());
}

Но это не работает, потому что класс уже существует (диалоговая ссылка).

Как я могу продолжить, чтобы иметь возможность добавлять большеcss к моей ссылке с htmlAttributes?

Спасибо

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Вы должны добавить класс dialogLink после объединения атрибутов, чтобы избежать его переопределения:

public static IHtmlString MyLink(this HtmlHelper htmlHelper, string linkText, object htmlAttributes)
{
    var builder = new TagBuilder("a");
    builder.SetInnerText(linkText);
    if (htmlAttributes != null)
    {
        builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
    }
    builder.AddCssClass("dialogLink");
    return new HtmlString(builder.ToString());
}
0 голосов
/ 23 мая 2013

Также вы можете использовать

if (htmlAttributes != null) 
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes), true);

ссылка на MSDN

public void MergeAttribute(
    string key,
    string value,
    bool replaceExisting
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...