0

我在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 [email protected]_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 [email protected]_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 [email protected]_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> 

回答

0

如果你希望它是必需的,但不希望顯示「必需的」錯誤消息,您可以將消息設置爲單個空間(以避免運行時錯誤「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._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$") { } 
    } 
+0

[必需(的ErrorMessage =「」)給出了一個錯誤,但是當你把一個空間的錯誤,將工作。 ==> [必需(ErrorMessage =「」)]謝謝:) – 2012-04-11 14:29:15

+0

謝謝,我更新了答案,說明。 – JustinStolle 2012-04-11 17:13:56

+0

不幸的是,使用正則表達式驗證電子郵件地址可能會導致錯誤的結果。考慮這些(通過你發佈的正則表達式的錯誤地址):'double..dots..are..not..allowed @ example.com','me @ hello .-。com',甚至是'me @。 .com' - 爲了完成符合IETF的電子郵件驗證,我建議使用我們的酷[電子郵件驗證組件](http://cobisi.com/email-validation/.net-component)作爲您的EmailAttribute類的後端。 ;) – 2012-04-12 05:35:12

1

寫有這樣的要求的消息:

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