带有字符串属性的JSON对象通过Web方法传递给C#类,并出现相应的Int属性转换/设置错误

带有字符串属性的JSON对象通过Web方法传递给C#类,并出现相应的Int属性转换/设置错误,c#,asp.net,json,C#,Asp.net,Json,我将JSON对象传递给ASP.NET Web方法,其中Web方法将类作为参数。该类有一个int属性,问题是如果客户端没有输入值,它将作为空字符串传递给服务器,而Web服务器无法正确处理它。我尝试过使用int.TryParse(value.ToString().Trim(),out-temp)但是我仍然得到以下错误不是Int32的有效值。。所以我的问题是,当向int属性传递空字符串时,如何将其设置为默认值0?我必须将属性更改为字符串吗 客户端JSON对象 { q: { "Quantity": ""

我将JSON对象传递给ASP.NET Web方法,其中Web方法将类作为参数。该类有一个int属性,问题是如果客户端没有输入值,它将作为空字符串传递给服务器,而Web服务器无法正确处理它。我尝试过使用
int.TryParse(value.ToString().Trim(),out-temp)但是我仍然得到以下错误
不是Int32的有效值。
。所以我的问题是,当向int属性传递空字符串时,如何将其设置为默认值0?我必须将属性更改为字符串吗

客户端JSON对象

{ q: { "Quantity": "" } }
服务器端Web方法

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

一如既往,我们感谢您的帮助


更新

我更改了我的类,因此属性是
字符串
,但在
get
上,字符串被解析为int,然后转换回
字符串
。这是可行的,但这是最有效的方法吗

C级


您的模型似乎没有反映您显示的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”}

尝试解析此JSON对象:{q:{“Quantity”:100},不带引号,并检查integer属性是否绑定。在客户端解析JSON对象?我宁愿不这样做,因为我觉得我会失去一些灵活性的功能;i、 e.将原始数据传递给服务器,然后让服务器处理传递数据的转换/错误处理。你同意/明白我的意思吗?对不起,也许我不清楚。如何生成“{q:{”Quantity:“100”}”对象?请发布客户端代码。我使用
jQuery.each()迭代
input
s
并创建一个JSON对象。然后我使用
JSON.stringify()发送到服务器之前。您是否正在设置帖子的内容类型或数据类型?($.ajax,$.post)?示例:contentType:'application/json',dataType:'json',我的模型确实反映了我显示的json对象。我在我的应用程序中的其他地方使用了该模型,没有任何问题。据我所知,这是必需的,这样当您将JSON对象发送到服务器时,它会被设置为一个特定的变量(q)。如果您使用的是jQuery,您就不需要它。我记得过去尝试过不使用它,但它不起作用。我想知道这是否与我使用ASP.NET2.0有关。
public class MyClass
{
    public QuantityModel Q { get; set; }
}

public class QuantityModel
{
    public int? Quantity { get; set; }
}
[WebMethod]
public ResponseType MethodName(MyClass q)
{
    return Something();
}