使用掩码验证整数输入 (Asp .NET MVC 3.0)
我的模型:
public virtual int? NumberTest { get; set; }
我的视图
@Html.LabelFor(model => model.NumberTest)
<br />
@Html.TextBoxFor(model => model.NumberTest)
我正在使用屏蔽输入插件,所以我在我的查看:
$("#NumberTest").mask("99999-999");
我生成的 Html:
<input data-val="true" data-val-number="The field NumberTest must be a number." id="NumberTest" name="NumberTest" type="text" value="" />
所以它自动在我的整数输入上生成数字验证...并且我使用带有非整数字符的掩码来格式化数字...
当我填充输入时总是调用此验证器。 ..怎么可以我解决这个问题吗?
My Model :
public virtual int? NumberTest { get; set; }
My View
@Html.LabelFor(model => model.NumberTest)
<br />
@Html.TextBoxFor(model => model.NumberTest)
I'm using Masked Input Plugin, so I have in my View :
$("#NumberTest").mask("99999-999");
My Html generated :
<input data-val="true" data-val-number="The field NumberTest must be a number." id="NumberTest" name="NumberTest" type="text" value="" />
So it automatically generated a number validation on my Integer input... And I'm using a mask with non-integer char to format number....
This validatior is always called when I fill the input ... How can I fix that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我所做的是将数据类型设置为字符串,以便它可以与 maskedinput 一起使用,但随后在自定义模型绑定器中,我删除了所有非数字字符,以便它可以作为 int 保存到数据库中。您仍然可以获得客户端和服务器端保护,因为客户端的 maskedinput 会阻止用户输入非数字字符,并且服务器端会过滤掉潜在的错误字符。
这是自定义模型绑定器代码:
自定义属性只是空属性:
在视图模型中,只需像这样标记您的字段:
以下是如何执行 带有屏蔽输入、编辑器模板和不显眼的验证的整个内容。
What I did was set the data type to string so it would work with maskedinput, but then in a custom model binder, I stripped out all the non-numeric characters so it could save to the database as an int. You still get both client-side and server-side protection because the user is prevented from entering non-numeric characters by maskedinput client-side and potentially bad characters are filtered out server-side.
Here's the custom model binder code:
The custom attributes are just empty Attributes:
In the view model, just mark your field like this:
Here's how to do the whole thing with maskedinput, editor templates and unobtrusive validation.