我想驗證包含在兩個字段中的電話號碼。MVC3驗證多個字段作爲單個屬性
第一個字段顯示區號,另一個字段顯示剩餘的電話號碼數字。
的要求是:
- 他們要求兩者。
- 它們必須是數字。
- 區號字段必須最多爲6位數字,電話號碼字段必須最多爲10位數字。
需要爲這兩個字段顯示單條消息。例如,如果地區代碼丟失但提供了電話號碼,則應在兩個字段後面顯示一條消息,說明「請輸入電話號碼」。。
我目前擁有的模式是類似於:
public class Customer
{
//...other fields here
public string AreaCode { get; set; }
public string PhoneNumber { get; set; }
}
我無法實現電話與正則表達式或simlar單場。
也有同樣的問題,這個here(還有一種類似於here),其中的答案建議創建一個自定義的驗證屬性(在這種情況下,一個名爲MultiFieldRequired
)來指定需要哪些屬性中的字段的名稱。驗證屬性然後使用反射來檢查其他屬性的值,以在出現錯誤時進行報告。
例如,在上述模型的情況下,我認爲我應該有:
public class Customer
{
//...other fields here
public string AreaCode { get; set; }
[MultiFieldRequired("AreaCode", "PhoneNumber", ErrorMessage="Please enter a phone number")]
public string PhoneNumber { get; set; }
}
然而,我所遇到的一個小問題,所提供的解決方案。自定義驗證屬性返回的錯誤僅針對具有數據註釋的字段(PhoneNumber是上述模型)進行報告。因此,如果用戶沒有輸入AreaCode,但提供了PhoneNumber,則將針對PhoneNumber字段而不是AreaCode報告錯誤。此外,如果您使用Visual Studio Internet項目提供的css,則提供的PhoneNumber字段將顯示爲紅色,而無效區域代碼顯示爲白色(不顯示錯誤),因此這看起來有點奇怪。
有沒有人有辦法糾正這種着色行爲,或者如果任何一個字段出錯(在字段中使用正確的顏色),我可以報告錯誤消息的方式?
預先感謝您。
我不太確定這個例子中的實現是如何工作的。唯一可以實現這個功能的方法是在屬性之上添加屬性,例如'[MultiFieldRequired(new string [3] {「Phone1」,「Phone2」,「Phone3」},ErrorMessage =「Phone#required 「)]'------代碼只接受一個數組。我不確定人們是如何使用這些逗號分隔的字符串並使其工作。 – ganjeii
我同意,語法不允許編譯的東西,ganjeii是正確的 – Gaurav123