【问题标题】:Custom validation .js file in MVC3MVC3 中的自定义验证 .js 文件
【发布时间】:2013-02-01 04:29:19
【问题描述】:

我的问题是

我想在 mvc3 中进行验证,客户端和服务器端。

我知道如何在服务器端使用验证,但在客户端验证时遇到问题。

假设我有一个带有 razor 的文本框

**Email : @html.Textboxfor(m=>m.Email)**

所以错误会像这样显示无效的电子邮件

现在我想在客户端和服务器端验证电子邮件。

对于客户端,我想使用我的 owan javascript 文件。在提交表单时首先验证

在客户端,如果它验证然后表单将提交并 服务器端的验证不会检查。 但是如果用户从浏览器中禁用脚本而不是服务器端验证将被执行,

【问题讨论】:

  • 实际上你正在厌烦..或想做的事情有点令人困惑..你能详细说明一下吗,....因为定义 @html.ValidationMessageFor(m=>m.email) 会解决你的问题......这就是 MVC 的基础......!!
  • 是的,我知道,但我想使用 jquery 来验证像 我的意思是使用外部 .js 文件

标签: javascript jquery asp.net-mvc


【解决方案1】:

服务器端验证应始终启用并且比客户端验证更强大。有些事情在客户端可能难以验证,例如模型或模型属性之间的复杂交互。 但是,您可以使用jQuery 验证器插件(VS MVC 项目模板附带)进行客户端验证。 你在服务器上有你的验证属性,它实现了IClientValidatable

public class MyValidationAttribute : ValidationAttribute, IClientValidatable
{

    public override bool IsValid(object value)
    {
        if (value == null) {
            return true;
        }
        //Add validation rules
        if (false) {
            return false;
        }
        return true;
    }

    public override string FormatErrorMessage(string name)
    {
        return "Please provide valid values."
    }

    public IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
    {
        return new ModelClientValidationRule[] { new ModelClientValidationRule {
            ErrorMessage = "Please provide valid values.",
            ValidationType = "validationrule"
        } };
    }
}

在客户端,您需要添加验证规则:

jQuery.validator.addMethod("validationrule", function (value, element, param) {
    if (value == "") {
        return false;
    }
    return true;
});
jQuery.validator.unobtrusive.adapters.addBool('validationrule');

确保在 jQuery 就绪处理程序之外添加它。请参阅this question 的已接受答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多