【发布时间】:2014-07-15 14:12:01
【问题描述】:
我正在用 ASP.NET MVC 开发一个 Web 应用程序。
当将视图中的字段绑定到模型中的整数属性时,MVC 使用type="number" 属性生成如下 HTML:
<input data-val="true"
data-val-number="The field MessageControlIdFrom must be a number."
id="Filter_MessageControlIdFrom"
name="Filter.MessageControlIdFrom"
type="number"
value="">
这很好,Chrome 识别出它需要一个数字并在输入字段中添加增量/减量控件。
如果我在输入非数字值时尝试提交表单,我会短暂看到一条我认为是由 Chrome 生成的验证消息:
但是问题是表单仍然提交数据并将数据发送回服务器。我怎样才能防止这种情况发生?
更新
这似乎会影响 Chrome v34 和 v35;但是在 Firefox v30 中,行为符合预期,并且由于验证错误而不会发生提交。
正如@pawel 在 cmets 中指出的那样,this fiddle 在 Chrome v34 和 v35 中确实按预期工作(它不提交)。因此,我认为这是我的应用程序和 Chrome 的组合所特有的。
我将尝试创建一个简化的应用程序来重现问题。
【问题讨论】:
-
你不使用jquery验证吗?与 MVC 一起打包的标准?类似
@section Scripts { @Scripts.Render("~/bundles/jqueryval") } -
jsfiddle.net/x5x2y 似乎按预期工作:Chrome 会显示一个气泡,如果值不是数字,则不会提交表单。
-
@pawel 谢谢,我同意它有效。显然我错过了一些东西 - 将尝试将问题减少到重现。
标签: html forms validation google-chrome