0

Web メソッドがクラスをパラメーターとして受け取る ASP.NET Web メソッドに JSON オブジェクトを渡しています。このクラスには int プロパティがあり、問題は、クライアントが値を入力しない場合、値が空の文字列としてサーバーに渡され、Web サーバーがそれを適切に処理できないことです。使用してみint.TryParse(value.ToString().Trim(), out temp);ましたが、まだ次のエラーが表示されますis not valid value for Int32.。私の質問は、空の文字列が渡されたときに int プロパティをデフォルト値の 0 に設定するにはどうすればよいですか? プロパティを文字列に変更する必要がありますか?

クライアント側の JSON オブジェクト

{ q: { "Quantity": "" } }

サーバーサイド Web メソッド

[WebMethod]
public ResponseType MethodName(MyClass q)
{
    return Something();
}

C# クラス

public class MyClass
{
    private int _Quantity = 0;
    public int Quantity
    {
        get { return _Quantity; }
        set
        {
            int temp = 0;
            int.TryParse(value.ToString().Trim(), out temp);
            _Quantity = temp;
        }
    }
}

いつものように、どんな助けも大歓迎です!


アップデート

プロパティが a になるようにクラスを変更stringしましたがget、文字列は int に解析されてからstring. うまくいきますが、これが最も効率的な方法ですか?

C# クラス

public class MyClass
{
    private string _Quantity = string.Empty;
    public string Quantity
    {
        get
        {
            int temp = 0;
            int.TryParse(_Quantity, out temp);
            return temp.ToString();
        }
        set
        {
            _Quantity = value.ToString().Trim();
        }
    }
}
4

1 に答える 1

0

あなたのモデルは、あなたが示した JSON を反映していないようです。null 許容整数を使用できます。

public class MyClass
{
    public QuantityModel Q { get; set; }
}

public class QuantityModel
{
    public int? Quantity { get; set; }
}

その後:

[WebMethod]
public ResponseType MethodName(MyClass q)
{
    return Something();
}

Quantity は文字列であるため、これは JSON と完全に一致しませんが、有効な整数を渡すと JavaScriptSerializer が機能します。明らかに、無効な値を渡すと、のようにクラッシュします{ q: { "Quantity": "foo_bar" } }

于 2013-01-25T12:25:54.463 に答える