我将一个JSON对象传递给一个ASP.NET方法,该方法将该类作为参数。该类有一个int属性,问题是如果客户端不输入一个值,它将作为空字符串传递给服务器,而Web server无法正确地处理它。我尝试过使用int.TryParse(value.ToString().Trim(), out temp);
,但仍然得到以下错误is not valid value for Int32.
。因此,我的问题是,当空字符串传递给int属性时,如何将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;
}
}
}
一如既往,任何帮助都是值得感激的!
更新
我更改了类,使属性为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();
}
}
}
发布于 2013-01-25 04:25:54
您的模型似乎没有反映您所展示的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不是完全匹配的,因为在这里,数量是一个字符串,但是如果您为它传递有效的整数,JavaScriptSerializer就会工作。显然,如果您传递无效的值,它就会崩溃,比如{ q: { "Quantity": "foo_bar" } }
。
https://stackoverflow.com/questions/14482756
复制