2014-06-09 35 views
0

我想在包含電話號碼的模型上使用Required屬性來驗證傳入的JSON。有兩個電話號碼屬性,主要(必需)和備用。對於Alternate,我希望空字符串有效,但字符串在1到9個字符之間且超過30個字符無效。這是行不通的:如何驗證如此字符串的模型可以在10到30個字符之間,或者空 - C#ASP.NET

public class PhoneCreateModel 
{ 
    [Required(AllowEmptyStrings = false, 
     ErrorMessageResourceName = "PrimaryPhoneNumberRequired", 
     ErrorMessageResourceType = typeof(DataAnnotationMessage))] 
    [StringLength(30, MinimumLength = 10, 
     ErrorMessageResourceName = "PrimaryPhoneNumberFormat", 
     ErrorMessageResourceType = typeof(DataAnnotationMessage))] 
    public string Primary { get; set; } 

    [StringLength(30, MinimumLength = 10, 
     ErrorMessageResourceName = "AlternatePhoneNumberFormat", 
     ErrorMessageResourceType = typeof(DataAnnotationMessage))] 
    public string Alternate { get; set; } 
} 

...因爲它不允許Alternate是一個空字符串。我如何允許它是一個空字符串或10-30個字符之間?

+1

不幸的是,默認的模型綁定嘗試空字符串保存爲對模型本身'null',而你要考慮它的一個空字符串。我使用了一個自定義模型聯編程序來改變這種行爲;其他人可能會在我有機會查看併發布相關信息之前發佈詳細信息... –

+1

您可以添加一個額外屬性來處理此問題:'[DisplayFormat(ConvertEmptyStringToNull = false)]',具體取決於你使用的是什麼版本的框架。 –

回答

相關問題