Asp.net mvc 如何防止在TwitterBootstrapMVC中生成ID属性?

Asp.net mvc 如何防止在TwitterBootstrapMVC中生成ID属性?,asp.net-mvc,twitter-bootstrap,Asp.net Mvc,Twitter Bootstrap,在TwitterBootstrapMVC中,剃刀片段 @Html.Bootstrap().TextBoxFor(m => m.UserName) 生成HTML,如: <input class="form-control" id="UserName" name="UserName" type="text" value=""> 在@StephenMuecke的帮助下,解决方案是: @Html.Bootstrap().TextBoxFor(m => m.AccountNam

在TwitterBootstrapMVC中,剃刀片段

@Html.Bootstrap().TextBoxFor(m => m.UserName)
生成HTML,如:

<input class="form-control" id="UserName" name="UserName" type="text" value="">

在@StephenMuecke的帮助下,解决方案是:

@Html.Bootstrap().TextBoxFor(m => m.AccountName).HtmlAttributes(new {id = (String)null})
但是TwitterBootstrapMVC也会生成需要非空Id的客户端验证和其他标记,例如,当TwitterBootstrapMVC生成相关标签时,无法使用空Id对复选框进行黑客攻击。将为“”引发异常

@Html.Bootstrap().CheckBoxFor(m => m.RememberMe).HtmlAttributes(new {id = (String)null})
因此,我能想到的避免Id冲突的唯一选项是,在容器页面内创建相同部分视图的多个实例时,为Id添加前缀,使其在整个页面中唯一,例如AccountList页面,该页面具有多个部分视图MemberInfo\u部分实例,每个实例对应一个帐户,@StephenMuecke也提到了这一点。部分视图~/Views/Account/MemberInfo_partial.cshtml中的文本框:

第一次出现在包含页面中时,Id为Account-MemberInfo\u Partial-AccountName;第二次出现时,Id为Account-MemberInfo\u Partial-2-AccountName,依此类推


UnQuid的代码在这里:

当你关心ID属性时,你也应该考虑这也会创建相同的名称属性,那么它将如何正确地回调呢?假设我在页面中有多个表单,名称的范围是一个表单,而ID是整个页面。你能用@Html.Bootstrap.TextBoxForm=>m.UserName.HtmlAttributesnew{id=SomeUniqueID}@StephenMuecke谢谢你的帮助。但是我想要的是生成一个完全没有Id属性的html标记。为此,您必须编写自己的帮助程序,但是如果Id是唯一的,那么它有什么错呢?
@Html.Bootstrap().CheckBoxFor(m => m.RememberMe).HtmlAttributes(new {id = (String)null})
@f.FormGroup().TextBoxFor(m => m.AccountName).Id(this.UniqueId(m => m.AccountName))