我正在开发ASP.Net Web API应用程序,我们正在为不同的客户端公开REST API。在获取用户的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”时,它被分配给我的模型的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 :(得分: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;
}
}