从ASP.NET MVC中的HTML帮助程序中删除默认ID属性

时间:2011-08-07 20:09:15

标签: asp.net-mvc

默认情况下,MVC的输入html助手会生成具有相同值的“id”和“name”。在我的情况下,我不需要id,当我这样做时,我总是输入自定义值。自动生成不必要的id会增加文档大小,让我很紧张,因为我可能在我的CSS或JavaScript代码中使用相同的id。

我可以改变html助手的默认行为,因此除非手动定义,否则不会生成id。

我知道我可以通过传递new { id = "" }来告诉助手不要生成id,但这种方法对于大型数据输入类型的应用程序来说并不是很方便。

是否有一种简单的方法可以改变这种行为,或者我是否需要编写自定义的html助手?

2 个答案:

答案 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 = "" }(尚未测试过。)

希望有所帮助。