2011-08-16 40 views
3

我正在使用遠程驗證來確保用戶類中的電子郵件和用戶名字段阻止用戶輸入數據庫中已存在的用戶名和/或電子郵件。MVC 3遠程驗證,重複簽入問題編輯視圖

這對創建視圖很好,但是我在編輯視圖中遇到的顯而易見的問題是,當我嘗試保存給定用戶的某些更改時 - 我在用戶名和電子郵件上收到了相同的驗證消息,已經存在於數據庫中!因此,阻止我編輯任何人,因爲他們的電子郵件和用戶名已經存在。

我一直在環顧四周,很驚訝我找不到類似的問題。我在創建頁面上看到了很多重複名稱/電子郵件/值驗證的例子,但是在編輯視圖中會出現不可避免的問題。

任何提示/技巧圍繞此將不勝感激。也許有一種方法可以使驗證僅在創建視圖中工作?儘管理想情況下,我希望在編輯視圖中進行驗證,只是在驗證檢查中排除用戶自己的姓名和電子郵件。

在此先感謝您的任何答案!

回答

3

您應該使用視圖模型。這些是專門爲滿足視圖要求而設計的類。控制器操作應僅將視圖模型傳遞給視圖,而不傳遞給域模型。因此,您將有兩個控制器操作,一個用於插入,另一個用於編輯,以及兩個相應的視圖模型及其各自的驗證規則。

+0

我不認爲這與他的要求有關。 –

+0

你做了伎倆感謝達林。 – DevDave

+0

哎呀,當我按下輸入時輸入了評論!視圖模型允許我分開發生在不同視圖中的事件,然後我可以在編輯視圖中排除原始郵件,同時仍然對其他電子郵件進行驗證。再次感謝 – DevDave

1

我周圍的問題是有2種不同的驗證方法;一個接受一個參數(用戶名),另一個接受2個參數(新的用戶名,原始用戶名)。 Edit方法使用2參數方法進行驗證,它將查找新的用戶名,除非它與原始用戶名匹配。

+0

這個建議和上述答案的組合解決了我的問題。謝謝! – DevDave