我有一个名为SubmitButton的自定义MvcHtmlString类,该类旨在充当提交按钮,该按钮为HttpAttributes的HTML对象字符串进行分配(类似于所有其他默认HtmlHelpers的功能。
我有一个字典扩展类,可以将其添加到我的大多数HtmlHelper HtmlAttributes属性中,如果条件为真,则基本上只将一个类添加为HtmlAttribute。
我的问题是:如何修改我的SubmitButton方法,使其接受Dictionary扩展,而不仅仅是偶然的属性列表?
SubmitButton代码:
public static MvcHtmlString SubmitButton(this HtmlHelper helper, string buttonText, object htmlAttributes = null)
{
StringBuilder html = new StringBuilder();
html.AppendFormat("<input type = 'submit' value = '{0}' ", buttonText);
//{ class = btn btn-default, id = create-button }
var attributes = helper.AttributeEncode(htmlAttributes);
if (!string.IsNullOrEmpty(attributes))
{
attributes = attributes.Trim('{', '}');
var attrValuePairs = attributes.Split(',');
foreach (var attrValuePair in attrValuePairs)
{
var equalIndex = attrValuePair.IndexOf('=');
var attrValue = attrValuePair.Split('=');
html.AppendFormat("{0}='{1}' ", attrValuePair.Substring(0, equalIndex).Trim(), attrValuePair.Substring(equalIndex + 1).Trim());
}
}
html.Append("/>");
return new MvcHtmlString(html.ToString());
}
字典扩展类和方法:
public static class DictionaryExtension
{
public static IDictionary<TKey, TValue> AddIf<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, bool addIt, TKey key, TValue value)
{
if (addIt)
dictionary.Add(key, value);
return dictionary;
}
}