我正在构建一个MVC应用程序,目前我遇到了一个麻烦的问题。
所以我有这些代码行:
<div class="editor-label">
@Html.LabelFor(model => model.m_Number, "OBJ Number")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.m_Number)
@Html.ValidationMessageFor(model => model.m_Number)
</div>
当我在这个页面中打开我的UI时,该字段变成了一种带有箭头的文本框,我可以上下单击它来升级或减少int值;很抱歉描述不好,但我找不到确切的词来形容它。
主要的问题是,我可以编辑该字段,而不是输入数字,我可以写:
abl
当我按下回车键时,它会"保存"。真正的保存还没有发生,因为我还没有向数据库发送任何信息,但我希望我的UI验证在该字段中写入的数据类型,我希望确保那里只写入整数,我不知道如何做到这一点。我需要帮助,因为我需要保护这些字段不插入错误的数据。
在我的课堂上,我已经写过了:
[Display(Name = "Obj Number")]
public int m_Number { get; set; }
但这并不能解决任何问题。
有人知道我该怎么做吗?谢谢
您可以使用pattern
属性并将其设置为只接受数字的正则表达式:
$(function() {
$('input[type="number"]').attr('pattern', '\d*');
});
不过请记住,这只是用于UI目的。您应该在服务器上执行必要的验证,因为没有什么可以阻止用户简单地使用FireBug并向您的服务器提交他想要的任何值。这根本不应该用于验证目的,而只是为了帮助用户。