我创建了一个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属性中?
答案 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);
}