带有字符串属性的JSON对象通过Web方法传递给C#类,并出现相应的Int属性转换/设置错误
我将JSON对象传递给ASP.NET Web方法,其中Web方法将类作为参数。该类有一个int属性,问题是如果客户端没有输入值,它将作为空字符串传递给服务器,而Web服务器无法正确处理它。我尝试过使用带有字符串属性的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": ""
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();
}