2011-11-21 68 views
1

我创建了一个MVC扩展以自动将属性应用于html输入。这是所有预期的工作,但是如果我想添加一个CSS类到HTML输入,它已经有一个CSS类的代码炸弹,因为属性已经设置。MVC .net添加/编辑帮助文件的CSS类.TextBox扩展

继承人我的代码:

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。添加(“类”,“字段锁定”)行,以便它将我的额外类添加到现有的类属性?

回答

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); 
    }