我正在开发一个ASP.NET MVC 4项目.我想使用Bootstrap 3.0在我的登录页面上设置数据验证错误.当我调试页面并给出数据验证错误时,这些代码在我的登录表单的消息中消失:
<form action="/Account/Login" class="col-md-4 col-md-offset-4 form-horizontal well" method="post"><input name="__RequestVerificationToken" type="hidden" value="Zbg4kEVwyQf87IWj_L4alhiHBIpoWRCJ9mRWXF6syGH4ehg9idjJCqRrQTMGjONnywMGJhMFmGCQWWvBbMdmGFSUPqXpx6XaS4YfpnbFm8U1" /><div class="validation-summary-errors"><ul><li>The user name or password provided is incorrect.</li> </ul></div> <div class="form-group control-group"> <div class="col-md-6 col-md-offset-3"> <input class="input-validation-error form-control" data-val="true" data-val-required="User name alanı gereklidir." id="UserName" name="UserName" placeholder="Kullanıcı Adı" type="text" value="" /> <span class="field-validation-error" data-valmsg-for="UserName" data-valmsg-replace="true">User name alanı gereklidir.</span> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-3"> <input class="input-validation-error form-control" data-val="true" data-val-required="Password alanı gereklidir." id="Password" name="Password" placeholder="Şifre" type="password" /> <span class="field-validation-error" data-valmsg-for="Password" data-valmsg-replace="true">Password alanı gereklidir.</span> </div> </div> <div class="form-group"> <div class="col-md-4 col-md-offset-4"> <button class="btn btn-default" type="submit">Giriş Yap</button> </div> </div> </form>
解决方法
如
Bootstrap’s docs所示,您需要将class has-error应用于包含输入的div,并具有class form-group:
<div class="form-group has-error"> ... </div>
为每个要检查的属性写一个条件是一个非常丑陋的情况,并根据该条件的结果应用类has-error,尽管可以这样做:
<div class="form-group @(Html.ViewData.ModelState.IsValidField(Html.IdFor(x => x.UserName)) ? null : "has-error" )">
这将负责服务器端验证.但是,您还需要考虑客户端验证.为此,您需要编写一些jQuery来检查是否存在类字段验证错误,并根据结果应用类has-error.
你可以自己做所有的事情,尽管我建议您查看TwitterBootstrapMVC,为您自动执行所有操作.所有你需要写的是:
@Html.Bootstrap().FormGroup().TextBoxFor(m => m.UserName)
免责声明:我是TwitterBootstrapMVC的作者.在Bootstrap 2中使用它是免费的.对于Bootstrap 3,它需要付费许可证.