MVC .net为helper.TextBox扩展添加/编辑css类

时间:2011-11-21 13:12:20

标签: asp.net-mvc asp.net-mvc-3

我创建了一个MVC扩展来自动将属性应用于html输入。哪个都按预期工作但是如果我想在html输入中添加一个css类并且它已经有一个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”)行,以便将我的额外类添加到现有的class属性中?

1 个答案:

答案 0 :(得分:1)

您可以像简单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);
    }