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」プロパティの文字列を送信した場合にエラーを送信したいということです。サーバー データ モデルでは double 値であるため、このプロパティのクライアントからの数値のみを受け入れたいと考えています。つまり、こうなりたい。

{"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 に答える