MVC .net добавить / редактировать класс CSS для помощника. Расширение TextBox - PullRequest
1 голос
/ 21 ноября 2011

Я создал расширение MVC для автоматического применения атрибутов для ввода HTML. Который все работает, как и ожидалось, однако, если я хочу добавить класс CSS к вводу HTML, и у него уже есть класс CSS, бомбы кода, поскольку атрибут уже установлен.

Вот мой код:

public static MvcHtmlString LockableTextBox(this HtmlHelper helper, string name, object value, object htmlAttributes, bool locked)    
    {
        RouteValueDictionary dic = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
        if (locked)
        {
            dic.Add("readonly", "readonly");
            dic.Add("class", "field-locked");
        }
        return helper.TextBox(name, value, dic);
    }

Я называю это так:

@Html.LockableTextBox("Initals", Model.Initals, new {}, Model.Locked)

, который работает, но этот вызов не

@Html.LockableTextBox("Initals", Model.Initals, new {@Class="field"}, Model.Locked)

Как мне изменить строку dic.Add ("class", "field-locked"), чтобы она добавила мой дополнительный класс к существующему атрибуту класса?

1 Ответ

1 голос
/ 21 ноября 2011

Вы можете использовать его как простой Dictionary. Проверьте, есть ли у вас такой ключ, и добавьте свою строку к существующему значению, в противном случае добавьте новый.

public static MvcHtmlString LockableTextBox(this HtmlHelper helper, string name, object value, object htmlAttributes, bool locked)    
    {
        RouteValueDictionary dic = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
        if (locked)
        {
            dic.Add("readonly", "readonly");
            if (dic.ContainsKey("class"))
               dic["class"] += " field-locked";
            else 
               dic.Add("class", "field-locked");
        }
        return helper.TextBox(name, value, dic);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...