2012-12-20 24 views
1

我正在開發ASP.Net Web API應用程序,並且正在爲不同客戶端公開REST API。使用用戶的JSON文件並將其轉換爲數據模型類時遇到問題。我的JSON如下所示。僅接受JSON屬性的數字格式

{"engagementid":1,"clientname":"fsdfs","myno":"23,45","address1":"fsd","address2":"fsdfs","city":"fsdfs","zip":"fsdf","info":"fsdfs","country":"fsdfs","currency":"NOK"} 

您可以看到我的「myno」作爲字符串發送。但在我的服務器數據模型中,「myno」是一個雙重值。所以在這裏發生的是,當我將「myno」的值作爲「23,45」發送時,它被分配給我的Model的MyNo屬性爲2345.這是錯誤的,因爲您可以看到數字因此而改變錯誤的轉換。我只需要限制這種轉換。我的意思是,如果他爲「myno」屬性發送字符串,我想向客戶端發送錯誤。由於它是我的服務器數據模型中的雙重值,我只想接受來自客戶端的此屬性的號碼。這意味着,我想要這樣。

{"myno":2345} //correct 
{"myno":"2345"} //wrong. I want to send a error to user by saying, "We only accept Numbers for this value" 

我該怎麼做?

更新: 如果我在我的服務器模型中使用int,則會解決此問題。我的意思是,如果客戶端向我的模型中表示爲int的屬性發送一個字符串,那麼通過說明字符串到int的轉換無法完成,它會給用戶一個錯誤。

回答

0

我不知道它是否正確。我只是根據我的經驗告訴我的建議。爲什麼不能創建自定義驗證屬性並檢查數據的數據類型。

public class IsNumberAttribute : ValidationAttribute 
{ 

    protected override ValidationResult IsValid(object value, ValidationContext context) 
    { 
     if(value.GetType() != Int) 
      return new ValidationResult("Only Numbers Allowed"); 
     return null; 
    } 
}