ASP.NET MVC自动解码来自AJAX的JSON编码参数

Way*_*Kao 5 asp.net-mvc json

当我的JavaScript代码使用AJAX调用ASP.NET MVC方法时,它会传递JSON中的值.例如:

var request = new XMLHttpRequest();
request.open("GET", "http://www.awesome.com/DoSomething?param1=%22some%20string%22&param2=1234", true);  // parameter string created with JSON.stringify
Run Code Online (Sandbox Code Playgroud)

要么

var request = new XMLHttpRequest();
request.open("POST", "http://www.awesome.com/DoSomething", true);
// set some headers
request.send("param1=%22some%20string%22&param2=1234");  // parameter string created with JSON.stringify
Run Code Online (Sandbox Code Playgroud)

在ASP.NET MVC方面,我有我的方法来处理调用:

public void DoSomething(string param1, string param2) {
Run Code Online (Sandbox Code Playgroud)

糟糕的是param1被引号括起来:

"some string"
Run Code Online (Sandbox Code Playgroud)

更糟糕的是param2是字符串:

1234
Run Code Online (Sandbox Code Playgroud)

当我真的想要将值作为整数时.所以,我要做的第一件事是使用DataContractJsonSerializer来解码这些小狗,所以我的字符串没有引号,我的第二个字符串被转换为int.前一两次也不算太糟糕,但是每个AJAX动作都需要做旧.

理想情况下,拥有如下签名非常棒:

public void DoSomething(string param1, int param2)
Run Code Online (Sandbox Code Playgroud)

我可以直接跳入并使用我的值而不用担心JSON解码,就像非AJAX操作一样.

有没有办法做到这一点?

Way*_*Kao 2

哦,发布后我发现代码可以满足我的需求。请参阅底部附近的“ObjectFilter”类:

http://weblogs.asp.net/omarzabir/archive/2008/10/03/create-rest-api-using-asp-net-mvc-that-speaks-both-json-and-plain-xml.aspx