默认情况下,MVC的输入html助手会生成具有相同值的“id”和“name”。在我的情况下,我不需要id,当我这样做时,我总是输入自定义值。自动生成不必要的id会增加文档大小,让我很紧张,因为我可能在我的CSS或JavaScript代码中使用相同的id。
我可以改变html助手的默认行为,因此除非手动定义,否则不会生成id。
我知道我可以通过传递new { id = "" }
来告诉助手不要生成id,但这种方法对于大型数据输入类型的应用程序来说并不是很方便。
是否有一种简单的方法可以改变这种行为,或者我是否需要编写自定义的html助手?
答案 0 :(得分:3)
使用,
Html.TextBoxFor(m => m.Text).RemoveNameIdAttribute()
public static MvcHtmlString RemoveNameIdAttribute(this MvcHtmlString helper)
{
if (helper == null)
throw new ArgumentNullException();
var element = helper.ToString();
var regex = new Regex("(id|name)[^'\"]*['\"][^'\"]*['\"]",RegexOptions.IgnoreCase | RegexOptions.Compiled);
return MvcHtmlString.Create(regex.Replace(element, ""));
}
答案 1 :(得分:2)
我不相信你可以覆盖HTML帮助程序的默认行为......但可以提供一些建议。
我通常不担心额外的“id”,因为正确的CSS结构和约定可以帮助防止这种情况。如果可能存在冲突,请发送new { id = "foo", name = "foo" }
。
我严重怀疑“id = myfield”角色会加起来多少。如果你对压缩感兴趣,你可以看看Combres:(http://combres.codeplex.com/)。
除此之外,解决方案可能是创建自己的HTML帮助程序,它可以覆盖基本的帮助程序,传入new { id = "" }
(尚未测试过。)
希望有所帮助。