2013-07-29 52 views
4

我在C#ASMX Web服務中有以下類,而不是MVC或Web表單項目。如何驗證存儲在C#類中的數據

public class Hotel 
{ 
    public int HotelId {get;set;} 
    public string Name {get;set;} 

    public Room[] Room { get; set; } 

    [Range(0, 12, ErrorMessage = "Rating must be between 1 and 5")] 
    public int Rating {get;set:} 
} 

public class Room 
{ 
    [Required]   
    public int RoomId {get;set;} 

    [Required] 
    [StringLength(175)] 
    public string Name {get; set;} 
} 

使用System.ComponentModel.DataAnnotations,因爲我能夠像上面那樣有效嗎?如果是的話如何得到驗證錯誤的迴應?

另外,當服務啓動它時,我讀取像下面這樣的Json數據對象。

oHotelRequest = JsonConvert.DeserializeObject<Hotel>(sJson); 
    HotelResponse oHotelResponse = BookingAPI.Hotel.Get(oHotelRequest); 
    return JsonConvert.SerializeObject(oHotelResponse); 

或者我能否在反序列化對象時進行驗證?

回答

2
+0

感謝您的鏈接。我已經更新了我的問題,並提及了Room作爲公共房間[] Room {get;組; }。這將如何驗證呢? – Tommassiov

+0

接下來,如果我創建了一個對象的新實例,如Hotel oHotel = new Hotel();他們首先與oHotel聯繫,然後oHotel.Room工作。這是正確的方法嗎? – Tommassiov

+0

首先 - 如果您沒有在酒店類的房間字段中添加任何驗證 - 則不會有此字段的任何驗證。此外,由於我使用很少的代碼片段進行測試,因此沒有以這種方式進行自動嵌套驗證,所以即使您將Room字段標記爲「必需」,您也必須手動驗證這些字段。但是,您可以按照提供的網站中的解決方案使其更自動:將IValidatableObject實現到您的類。然後,在Hotel.Validate函數中,您可以使用Room.Validate強制驗證Room字段(當然Room也必須實現IValidatableObject接口)。 –

相關問題