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);
或者我能否在反序列化對象時進行驗證?
感謝您的鏈接。我已經更新了我的問題,並提及了Room作爲公共房間[] Room {get;組; }。這將如何驗證呢? – Tommassiov
接下來,如果我創建了一個對象的新實例,如Hotel oHotel = new Hotel();他們首先與oHotel聯繫,然後oHotel.Room工作。這是正確的方法嗎? – Tommassiov
首先 - 如果您沒有在酒店類的房間字段中添加任何驗證 - 則不會有此字段的任何驗證。此外,由於我使用很少的代碼片段進行測試,因此沒有以這種方式進行自動嵌套驗證,所以即使您將Room字段標記爲「必需」,您也必須手動驗證這些字段。但是,您可以按照提供的網站中的解決方案使其更自動:將IValidatableObject實現到您的類。然後,在Hotel.Validate函數中,您可以使用Room.Validate強制驗證Room字段(當然Room也必須實現IValidatableObject接口)。 –