仅在电子邮件无效时显示错误消息

时间:2012-04-11 09:17:46

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

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

模型:

    [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>

2 个答案:

答案 0 :(得分:1)

使用如下所示的消息进行编写:

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

答案 1 :(得分:0)

如果您希望它是必需的,但不希望显示“required”错误消息,则可以将消息设置为单个空格(以避免运行时错误“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}$") { }
  }
相关问题