【问题标题】:only show the errormessage when email is invalid仅在电子邮件无效时显示错误消息
【发布时间】:2012-04-23 14:11:29
【问题描述】:

我在 ASP MVC3 中工作。我有一个输入客户联系信息的模型。 该信息是必需的。当 viewstat 无效时,文本框必须有一个红色边框(这有效)en no errormessage。但是当 emailinput 无效时,错误必须在视图上可见。因此,只有电子邮件注释的错误消息必须可见,而不是必需的注释。我不知道该怎么做。

型号:

    [Required]
    public string FirstName { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public string Address { get; set; }
    [Required]
    public string PostalCode { get; set; }
    [Required]
    public string City { get; set; }
    [Required]
    public string Country { get; set; }
    [Required]
    public string PhoneNumber { get; set; }
    public string Fax { get; set; }
    [Required]
    [Email]
    public string Email { get; set; }

查看:

<div class="row-fluid">
    <div class="span6">
                <div data-role="fieldcontain" class="ui-hide-label">
                    <label for=@Lingo.language.Obj_Telefoon>@Lingo.language.Obj_Telefoon</label>
                    <span>@Html.TextBoxFor(m => m.PhoneNumber, new { style = "width:90%!important;", placeholder = @Lingo.language.Obj_Telefoon })</span>
                </div>               
    </div>
    <div class="span6">
        <div data-role="fieldcontain" class="ui-hide-label">
            <label for=@Lingo.language.Obj_Fax>@Lingo.language.Obj_Fax</label>
            <span>@Html.TextBoxFor(m => m.Fax, new { placeholder = @Lingo.language.Obj_Fax })</span>
        </div>  
    </div>
 </div>
 <div class="row-fluid">
    <div class="span12">
        <div data-role="fieldcontain" class="ui-hide-label">
            <label for=@Lingo.language.Obj_Email>@Lingo.language.Obj_Email</label>
            <span>@Html.TextBoxFor(m => m.Email, new { style = "width:98%!important;", placeholder = @Lingo.language.Obj_Email })</span>
            <span>@Html.ValidationMessageFor(m => m.Email)</span>
        </div>  
    </div>
 </div>

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 data-annotations email-validation asp.net-mvc-validation


    【解决方案1】:

    写下所需的信息,如下所示:

    [Required( ErrorMessage = "The first name is required" )]
    public string FirstName { get; set; }
    

    【讨论】:

      【解决方案2】:

      如果您希望它是必需的,但不想显示“必需”错误消息,您可以将消息设置为单个空格(以避免运行时错误“ErrorMessageString 或 ErrorMessageResourceName 必须是设置,但不能同时设置。”)

      [Required(ErrorMessage = " ")]
      [Email(ErrorMessage = "Must be a valid email address.")]
      public string Email { get; set; }
      

      如果您还没有 Email 属性,您可以创建一个类文件(例如 EmailAttribute.cs),其中包含:

      using System.ComponentModel.DataAnnotations;
      
      public class EmailAttribute: RegularExpressionAttribute {
          public EmailAttribute()
            : base(@"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$") { }
        }
      

      【讨论】:

      • [Required(ErrorMessage = "")] 给出一个错误,但是当你为错误放置一个空格时它会起作用。 ==> [必需(ErrorMessage = " ")] 谢谢:)
      • 很遗憾,使用正则表达式验证电子邮件地址可能会返回错误结果。考虑这些(通过您发布的正则表达式的错误地址):double..dots..are..not..allowed@example.comme@hello.-.com,甚至是me@..com - 对于一个完整的、符合 IETF 的电子邮件验证,我建议使用我们很酷的 email validation component 作为后端对于您的 EmailAttribute 类。 ;)
      猜你喜欢
      • 2021-04-20
      • 2023-03-06
      • 2016-06-27
      • 2018-05-18
      • 2020-04-06
      • 1970-01-01
      • 2014-07-14
      • 2018-02-09
      • 1970-01-01
      相关资源
      最近更新 更多