model-view-controller - 使用 MVC3 和 jQuery 对整数进行不显眼的验证

标签 model-view-controller asp.net-mvc-3 jquery-plugins unobtrusive-validation

不显眼的验证不区分数据类型。 MVC 仅向所有数字字段添加“数字”验证。

这会对 1.2345 成为有效整数产生不良影响。当您提交时,MVC 绑定(bind)器无法解析该值。因此,您不会从服务器获取客户端错误,而是从服务器获取错误。

解决这个问题的最佳方法是什么?有现成的解决方案吗?

最佳答案

好的,这就是我所做的。

为 Int32 编写了我自己的 EditorTemplate (Views/Shared/EditorTemplates/Int32.cshtml):

@model int?           
@Html.TextBox("", Model.HasValue ? Model.Value.ToString() : "", new { data_val_integer = "Field must be an integer" }) 

添加了一个验证适配器(在 $(document).ready 上运行它:)

jQuery.validator.addMethod('integer',
    function (value, element, params) {
        return String.IsNullOrEmpty(value) || isInteger(value);
    });

jQuery.validator.unobtrusive.adapters.add("integer", [],
    function (options) {
        options.rules['integer'] = {};
        options.messages['integer'] = options.message;
    });

编写了如下所示的 Javascript 函数 isInteger

function isInteger(value) {
    return parseInt(value, 10) == value;
}

现在,如果您键入任何带有小数点的内容,整数字段会给出一个很好的消息“字段必须是整数”。

很高兴听到更好的方法。

关于model-view-controller - 使用 MVC3 和 jQuery 对整数进行不显眼的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468210/

相关文章:

objective-c - 设计模式 - Objective-C - MVC Model View Controller

asp.net - Asp MVC3 集合的自定义编辑器模板(空或非)

ios - 这个 MVC 模式是什么 : a stub delegate and data source

javascript - 从javascript中的viewbag属性获取值

asp.net - 我应该如何使用 ASP.Net MVC3 中的值自动填充 Html.EditorFor?

javascript - jquery 插件 - 工作但在调试时,甚至在到达该行之前就显示结果

javascript - jquery脚本从iframe中提取src

php - 使用 PHP foreach 代码填充日历

java - 在 java 项目中将方法(非 get 和 set)放在哪里才能符合 Spring MVC

asp.net-mvc-3 - 发回 View 后值不会改变?