ASP.NET MVC中为TextBox添加Bootstrap CSS类属性异常问题
问题原因及解决方法
为什么TextBox会把class属性当值?
嘿,这个坑我熟得很!你这是踩了HtmlHelper重载参数顺序的雷了:
Html.TextBox()的常用重载是:TextBox(string name, object value, object htmlAttributes)- 你现在把
new { @class="form-control" }放在了第二个参数的位置,这个位置本来是用来指定文本框默认值的,所以MVC把这个匿名对象当成了文本框的值(渲染出来就是类似System.Collections.Generic.Dictionary...的字符串),完全没把它当成HTML属性处理。
正确的写法
要给TextBox添加CSS类,你需要明确传入第二个参数(如果没有默认值就传null),把HTML属性放在第三个参数的位置:
@Html.TextBox("Title", null, new { @class = "form-control" })
如果你的视图是强类型绑定的,更推荐用强类型的TextBoxFor,它的参数逻辑更直观,也不容易搞混:
@Html.TextBoxFor(m => m.Title, new { @class = "form-control" })
为什么TextArea能正常工作?
这是因为Html.TextArea()有一个专门的重载:TextArea(string name, object htmlAttributes),当你只传两个参数时,MVC会自动匹配这个重载,把第二个参数识别为HTML属性,所以不会出现混淆。
内容的提问来源于stack exchange,提问作者Sibusiso Shongwe
相关产品推荐
相关产品推荐

