ASP.NET MVC 3 Validation - 谨慎ValidationMessage的误触发

使用Html.ValidationMessageFor即可扩展显示Error Message。

默认的表达格式如下:

<span class="field-validation-error">validationMessage or defaultErrorMessage</span>


需要注意的是,错误的验证是再ModelState去取的,所以对于Action的参数的Model要注意。

以AccountController的Logon为例:

(1)

 public ActionResult LogOn()
 {
     return View();
 }


(2)

 public ActionResult LogOn(LogOnModel model)
 {
     return View();
 }


在(1)中,没有任何参数,返回页面如下:

<input data-val="true" data-val-required="The User name field is required." id="UserName" name="UserName" value="" type="text">
<span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span>
            
错误信息的class为"field-validation-valid",这是正常一种情况。

第(2)中情况页面返回如下:

<input class="input-validation-error" data-val="true" data-val-required="The User name field is required." id="UserName" name="UserName" value="" type="text">
<span class="field-validation-error" data-valmsg-for="UserName" data-valmsg-replace="true">The User name field is required.</span>
            

这里,错误信息的class为"field-validation-error",验证已被触发,我们在入口参数上加了一个LogOnModel, 这个Model上是带有字段的验证属性的,所以,在请求发送后,将生成一个LogOnModel,然后将触发Model的验证,这对于首次访问LogOn页面来的用户来说,这并不好理解,我刚登陆,怎么就显示错误信息了呢?


在(2)中,虽然model没有与View进行绑定,但验证仍然被触发,这说明验证与传入View的model无关,而是验证请求发送所绑定的数据。

所以使用ASP.NET MVC的Validation时,对于参数类型需略微注意,以免误触发验证,造成不良的用户体验。







评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值