【问题标题】:Facing issue while validating the Email Address验证电子邮件地址时面临的问题
【发布时间】:2013-02-19 11:03:23
【问题描述】:

JQuery

$(document).ready(function () {
    var EmailContainer = $('#EmailContainer');
    var url = EmailContainer.attr('data-url');
    EmailContainer.load(url, function () {
        var Emailform = $('#EmailForm');
        $.validator.unobtrusive.parse(Emailform);
        Emailform.submit(function () {
            debugger;
            var Emailform = $(this);
            if (Emailform.valid()) {
                var SendEmailUrl = EmailContainer.attr('Json-Url');
                var UserModel = { From: $('#From').val(), To: $('#To').val(), 
                      Subject: $('#Subject').val(), 
                      Description: $('#Description').val() }
                $.post(SendEmailUrl, UserModel, function (data) {
                    Emailform.html(data);
                    Emailform.removeData('validator');
                    Emailform.removeData('unobtrusiveValidation');
                    $.validator.unobtrusive.parse(Emailform);
                });
            }
            return false;
        });
    });
});

型号

public class User
    {
        [Required(ErrorMessageResourceType = typeof(Resource1), 
              ErrorMessageResourceName = "From")]
        [DataType(System.ComponentModel.DataAnnotations.DataType.EmailAddress,
              ErrorMessageResourceType = typeof(Resource1), 
              ErrorMessageResourceName = "InvalidEmail")]
        [DisplayName("From Email Address")]
        public String From { get; set; }

        [Required(ErrorMessageResourceType = typeof(Resource1),
                  ErrorMessageResourceName = "To")]
        [DataType(System.ComponentModel.DataAnnotations.DataType.EmailAddress, 
                  ErrorMessageResourceType = typeof(Resource1), 
                  ErrorMessageResourceName = "InvalidEmail")]
        [DisplayName("To Email Address")]
        public String To { get; set; }

        [Required(ErrorMessageResourceType = typeof(Resource1),
                  ErrorMessageResourceName = "Subject")]
        [DisplayName("Subject")]
        public String Subject { get; set; }

        [Required(ErrorMessageResourceType = typeof(Resource1),
                  ErrorMessageResourceName = "Description")]
        [DisplayName("Description")]
        public String Description { get; set; }
    }

问题 - 未显示对无效电子邮件地址的验证

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-3 unobtrusive-validation


    【解决方案1】:

    问题 - 未显示对无效电子邮件地址的验证

    我在您的代码中看不到您进行任何验证的任何地方。如果要进行验证,请在模型属性上使用相应的验证属性:

    [Required(ErrorMessageResourceType = typeof(Resource1), 
          ErrorMessageResourceName = "From")]
    [DataType(System.ComponentModel.DataAnnotations.DataType.EmailAddress,
          ErrorMessageResourceType = typeof(Resource1), 
          ErrorMessageResourceName = "InvalidEmail")]
    [DisplayName("From Email Address")]
    [RegularExpression("GET A REGEX TO VALIDATE AN EMAIL FROM HERE: http://www.regular-expressions.info/email.html")]
    public string From { get; set; }
    

    如果您的 To 属性打算用作电子邮件,显然也是如此:

    [Required(ErrorMessageResourceType = typeof(Resource1),
              ErrorMessageResourceName = "To")]
    [DataType(System.ComponentModel.DataAnnotations.DataType.EmailAddress, 
              ErrorMessageResourceType = typeof(Resource1), 
              ErrorMessageResourceName = "InvalidEmail")]
    [DisplayName("To Email Address")]
    [RegularExpression("GET A REGEX TO VALIDATE AN EMAIL FROM HERE: http://www.regular-expressions.info/email.html")]
    public string To { get; set; }
    

    所以去这里获取电子邮件的正则表达式:http://www.regular-expressions.info/email.html

    【讨论】:

      【解决方案2】:

      System.ComponentModel.DataAnnotations.DataType.EmailAddress 不用于验证电子邮件。使用它是为了让 ASP.Net MVC 可以决定如何显示字段的值。

      您必须编写自己的电子邮件验证逻辑。 如果我们将System.ComponentModel.DataAnnotations.DataType.EmailAddress 应用于任何属性,那么该字段将显示为带有超链接,而不是作为添加了“mailTo”链接的普通文本。通过编写自定义数据注释添加您自己的验证电子邮件地址的逻辑。

      干杯

      【讨论】:

      • 你说的是自定义属性吗?
      • 是的,通过继承 System.ComponentModel.DataAnnotations.ValidationAttribute 类来编写属性并将逻辑添加到 IsValid() 方法。
      猜你喜欢
      • 2011-04-19
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2018-03-13
      • 2011-09-02
      • 2013-02-20
      相关资源
      最近更新 更多