仅在电子邮件无效时显示错误消息
Posted
技术标签:
【中文标题】仅在电子邮件无效时显示错误消息【英文标题】: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>
【问题讨论】:
【参考方案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.com
、me@hello.-.com
,甚至是me@..com
- 对于一个完整的、符合 IETF 的电子邮件验证,我建议使用我们很酷的 email validation component 作为后端对于您的 EmailAttribute 类。 ;)以上是关于仅在电子邮件无效时显示错误消息的主要内容,如果未能解决你的问题,请参考以下文章