【问题标题】:ASP.NET MVC automatically decoding JSON-encoded parameters from AJAXASP.NET MVC 自动解码来自 AJAX 的 JSON 编码参数
【发布时间】:2009-07-04 04:39:47
【问题描述】:

当我的 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

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

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

public void DoSomething(string param1, string param2) {

糟糕的是 param1 被引号包围:

"some string"

更糟糕的是param2是字符串

1234

当我真的想要整数值时。所以,我要做的第一件事是使用 DataContractJsonSerializer 来解码这两个小狗,这样我的字符串就没有引号,我的第二个字符串被转换为一个 int。前一两次还不错,但每次 AJAX 操作都必须做这些操作会变老。

理想情况下,有这样的签名会很棒:

public void DoSomething(string param1, int param2)

我可以直接进入并使用我的值而不必担心 JSON 解码,就像对非 AJAX 操作所做的那样。

有没有办法做到这一点?

【问题讨论】:

    标签: asp.net-mvc json


    【解决方案1】:

    哦,发布后我找到了符合我要求的代码。查看底部附近的“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

    【讨论】:

    • 我到处找这个!谢谢!
    【解决方案2】:

    我不确定使用 ModelBinder 与 ObjectFilter 相比有什么优势,但这是我想出的使用自定义 ModelBinder 的解决方案。

    How do I pass a Dictionary as a parameter to an ActionResult method from jQuery/Ajax?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-03
      • 2013-12-28
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多