如何阻止MVC对所需字段进行不显眼的验证以及激活电子邮件验证?

时间:2012-11-29 09:13:33

标签: javascript asp.net asp.net-mvc-3 jquery-validate

我有一个ASP.NET MVC登录表单,它使用客户端不显眼的验证。

我的登录模型的UserName具有[Required]属性。 输入的大多数用户名都是电子邮件地址,所以在触摸设备上,我想展示一个友好的电子邮件友好键盘。所以我在type="email"上设置<input>,就像这样:

@Html.TextBoxFor(m => m.UserName, new { type = "email" })

现在,我不希望验证电子邮件地址(因为非电子邮件用户名有效),但不知何故,因为我有[Required]属性,默认的jquery.validate电子邮件验证启动同样,给我一个'请输入有效的电子邮件地址'错误。

有没有办法阻止这种情况,同时保持必填字段验证?

2 个答案:

答案 0 :(得分:4)

解决方案变得非常简单:

$('#loginform').data("validator").settings.rules["UserName"].email = false;

使用多个规则集(来自jquery.validate.js)验证输入字段:

    var data = $.validator.normalizeRules(
    $.extend(
        {},
        $.validator.metadataRules(element),
        $.validator.classRules(element),
        $.validator.attributeRules(element),
        $.validator.staticRules(element)
    ), element);

attributeRules是导致电子邮件验证被激活的原因,但由于staticRules取得优先权,因此我们的上述作业将取消激活电子邮件验证。

答案 1 :(得分:0)

也许是一个dum建议,但如何删除[Required]属性并在后期操作中在控制器中处理它? :)