MVC提供了許多驗證屬性,可用作數據註釋來執行簡單的服務器端驗證。但是,如果我想使用自己的業務邏輯進行自定義驗證,則需要創建自定義驗證屬性,該屬性源自ValidationAttribute
,並覆蓋IsValid
方法。IClientValidatable實現是否違反了MVC中的DRY原則?
到目前爲止這麼好。但是,如果我想在客戶端執行相同的驗證,則需要在驗證屬性類中實現IClientValidatable
接口,並實現GetClientValidationRules
方法,該方法會告訴我的應用程序必須在此應用程序上執行驗證客戶端也是如此。
然而,有爭議的問題是我需要使用jQuery將此客戶端驗證的邏輯作爲單獨的JavaScript編寫。這與我在覆蓋IsValid
方法時已在C#(或VB)中編寫的完全相同。
爲什麼我必須兩次寫同樣的邏輯,儘管使用不同的語言?這是否違反了DRY原則?我希望MVC能夠爲驗證邏輯本身生成JavaScript。
舉例說明什麼我談論:
編輯:
而且,如果我的驗證邏輯,需要從應用程序配置文件或應用程序緩存數據?如何在我爲客戶端驗證編寫的jQuery方法中使用它?如果我不能,是否有其他方式來進行客戶端驗證,其邏輯使用應用程序數據?
感謝您的回答。不過我有一個後續問題,我已經添加到問題描述中。 –
@AmateurProgrammer我已經更新了我的答案以回答您的其他問題。 –
再次感謝您的答案。我會試圖做的是,我將在自定義驗證屬性類的「IsValid」方法中編寫驗證邏輯。另外,我將得到我需要的驗證數據作爲JSON,並將其存儲在客戶端,在ViewBag中或視圖上的隱藏字段中,並使用此JSON編寫實現相同驗證邏輯的jQuery方法數據。我希望這可以工作。 –