今天有一個非常酷的想法,但我不知道如何去做。使用派生類和數據註釋進行軟驗證
我在asp.net MVC3 C#中建立一頁一頁的表單,保存到每頁末尾的臨時區域。
現在這個數據進入一個有幾個枚舉類的類,所以它相對複雜。現在,我希望用戶能夠放入任何他們想要的東西而不需要驗證(顯然安全除外),這樣他們就可以拋出任何他們想要的東西,但是我希望這可以通過軟驗證。
我想使用元數據進行驗證,但是由於這提供了硬性驗證,我不能把它放在窗體用作模型的類上(強類型)。所以,我認爲最好的辦法是從表單上的類中派生出一個類,然後拋出數據註釋(我希望它可能以某種方式應用一個接口,但我假設它不是)
然後,當用戶想要提交表單到我們的數據庫,我希望表單通過和驗證。我想通過將沒有數據註解的類轉換成dataAnnotations爲空的類,並且發生的任何錯誤(基本上是數據無效時)生病都能夠在屏幕上列出並告訴他們來解決它。
現在,我希望能夠做的另一件事是,我可以以某種方式使用註釋類來軟驗證窗體,當用戶在上面。所以我可以說「我們建議你把這個領域放進去」。而不是,「這個領域不能是空的」。
所以,結論是:
- 是否可以打開和關閉接口,如果是的話,怎麼樣?
- 我將如何轉換CLASSA成CLASSB其中CLASSB從ClassA的派生和使用dataAnnotations
- 在轉換期間(2續),我將如何捕捉任何數據錯誤,並列出他們
- 我怎麼會軟驗證關閉classB的形式,其中模型是類A
我希望這是所有可能的。這似乎是最乾淨的方式。如果有人能想到更好的方法來做到這一點,我都是耳朵......或眼睛。
更新的印象是dataAnnotations會阻止我把任何不正確的數據在1 林,但是我做的那一刻一些測試,似乎我能夠以編程方式應用不正確的數據。即在必填字段中爲null。那麼數據註釋只適用於頁面上的驗證嗎?如果是這樣,不要理會我的整個問題。
更新2 我還在尋找一個答案,如果任何人都可以貢獻
感謝您的觀察,是一個很好的...我知道驗證是一個二元操作。我更注重檢查我是否得到了真實或虛假的信息,但仍然能夠提交。 – MrJD