0

我将 JSON 对象传递给 ASP.NET Web 方法,其中 Web 方法将类作为参数。该类有一个 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;
        }
    }
}

一如既往,任何帮助表示赞赏!


更新

我更改了我的类,以便属性是 astring但是在get字符串被解析为 int 然后转换回 a 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。您可以使用可为空的整数:

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

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

接着:

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

这与您的 JSON 不完全匹配,因为其中 Quantity 是一个字符串,但如果您为其传递有效的整数,JavaScriptSerializer 将起作用。显然,如果您传递无效值,它将崩溃,例如{ q: { "Quantity": "foo_bar" } }.

于 2013-01-25T12:25:54.463 回答