当我从未要求验证时,输入data-val = true强制验证

时间:2014-02-18 21:20:53

标签: c# jquery asp.net-mvc entity-framework twitter-bootstrap

我有一个包含日期时间值的输入框(文本),由于某些原因,当我甚至不需要时,此输入框已经过验证。

我的模型和ViewModel根本没有验证。

在我的Razor视图页面中,我确实有一些输入字段包含:

  @Html.ValidationMessageFor(vm => vm.User.Age)

在这个输入上,我试图输入一些字符串,它给了我一个客户端验证警告:

 @Html.TextBoxFor(vm => vm.User.BannedDate)

下面是在输入框下面呈现的HTML:

<input data-val="true" data-val-date="The field BannedDate must be a date." id="User_BannedDate" name="User.BannedDate" type="text" value="27/02/2014 12:00:00 AM" class="input-validation-error">

我正在使用Bootstrap,我也有jquery。它可以自动检测吗?

更新

web.config中没有全球化标签

在我的Controller的OnActionExecuting中,我正在设置:

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-CA");

1 个答案:

答案 0 :(得分:2)

框架会自动生成这些,因为它会尝试将您放在该文本字段中的任何内容绑定到backing属性。由于BannedDate是日期且无法接受Tomorrow之类的值,因此框架确保从客户端提交有效日期。查看您的输出,它不需要这些字段,只有在该字段中输入了某些内容时,它才是日期。

至于Age属性,如果你没有使用可空int,你会看到以下之一:

1)自动填充为0

2)如果您使用的是可空的int,它可能与BannedDate相同,因为您必须输入一个整数,而不是32 and a half!作为可接受的值。

如果这些自动验证没有到位或者客户端上的javascript已关闭,则在绑定期间会收到ModelState错误,告知您该值对于这些特定字段而言不是可接受的值。