我正在使用Disable autocomplete on html helper textbox in MVC在文本框中将“自动完成”添加到“关闭”:
public static MvcHtmlString NoAutoCompleteTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
{
return html.TextBoxFor(expression, new { autocomplete = "off" });
}
如果视图上没有htmlAttributes,这很好。一些文本字段还添加了额外的CSS类:
@Html.NoAutoCompleteTextBoxFor(m => m.UserName, new { @class = "ignore" })
有没有一种合并htmlAttributes集的方法,而不是专门为此创建另一个帮助器?
提前致谢...
答案 0 :(得分:3)
您可以使用RouteValueDictionary。
var attrs = new RouteValueDictionary(htmlAttributes);
attrs ["autocomplete"] = "off";
return html.TextBoxFor(expression, attrs);
答案 1 :(得分:1)
是的原因。将对象传递给帮助程序时,可以使用反射来读取所有属性(对应于要设置的html属性),并将组合属性作为Dictionary传递给帮助程序:
Dictionary<string, object> attrs = new Dictionary<string, object>();
if (htmlAttributes != null)
{
foreach (var prop in htmlAttributes.GetType().GetProperties())
{
attrs[prop.Name] = prop.GetValue(htmlAttributes, null);
}
}
// now add your own attribute(s):
htmlAttributes["autocomplete"] = "off";
return html.TextBoxFor(expression, htmlAttributes);