2010-09-16 60 views
1

我有一個ASP.Net MVC站點,它連接到一個Web服務。MVC中的對象屬性驗證(使用Web服務)

該網站的視圖模型包含用於每組所需服務數據AccountDetails(包含AccountId,AccountType等),ContactDetails(包含名稱,地址等)的對象等。

該服務具有一個'CreateUser()'方法,它接受這些對象作爲參數,然後它自己執行所有的驗證 - 傳回一個包含任何已發現錯誤數組的對象,包括名稱具體的財產/領域。

我想知道是否有辦法將返回的錯誤數據傳遞到DataAnnotations或其他東西。

我明確地不能在模型本身中編寫條件,因爲Web服務中的驗證條件隨時可以更改 - 而且我們希望這可以規定什麼失敗以及哪些成功。

==進一步信息贊成使它更清楚一點==

想象我是在本地(視圖模型內)創建ContactDetails類,我可以很簡單地做到這一點

public class ContactDetails 
{ 
    [IsRequired()] 
    [CustomAttributeofSomekind] 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 
} 

然而,在這種情況下 - 如果我們想改變驗證標準,無論出於什麼原因,我們都不得不在Web服務和所有訪問該服務的客戶端網站中對其進行更改。

我們不想這樣做 - 相反,如果(在上述情況下)ContactDetails.LastName突然需要並且不得超過10個字符 - 這應該只需要在Web服務中更新。

+0

我很困惑...你可以改寫這個嗎?特別是你的意思是*將返回的錯誤數據傳遞給DataAnnotations或其他*。如果可以顯示一些代碼也是很好的。 – Charlino 2010-09-16 20:50:47

回答

2

我認爲你有兩個選擇:

  1. 創建一個User類來包裝CREATEUSER()方法和DataAnnotations添加到(這是我會做什麼,它允許你去強類型)
  2. 直接從控制器Action調用CreateUser()方法並使用服務器端驗證。違反任何驗證規則時,將CreateUser()結果中的每個驗證錯誤添加到ModelState.Errors集合中。
+0

謝謝!我認爲出於我們的目的,我們將使用ModelState.Errors,因爲這可以確保我們可以將所有驗證規則與服務保持一致 – isNaN1247 2010-09-17 08:56:46