1

我正在开发 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”是一个 double 值。所以这里发生的情况是,当我将“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 的转换。

4

1 回答 1

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;
    }
}
于 2012-12-22T07:00:17.497 回答