修改自定义HtmlHelper代码以接受HTMLAttributes的Dictionary参数吗?

时间:2019-02-12 14:15:27

标签: c# asp.net-mvc model-view-controller

我有一个名为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;
    }
}

0 个答案:

没有答案