3

我正在日历应用程序上测试推送通知。当我在日历应用程序上创建事件时,我的网站会收到一个带有 JSON 字符串的 HttpPost 请求。我编写了这样的代码,但我无法在我的操作方法中接收 JSON 字符串。

       [HttpPost]
       public ActionResult Push(String jsonReq)
       {
         Console.write(jsonReq);
         return View();
       }

当我以与 JSON 相同的结构创建模型时,我可以接收请求。它似乎与 JSON 结构紧密耦合?我在 ASP.Net MVC 4 中使用。

     [HttpPost]
    public ActionResult Push(JSONModel jsonModel)
    {

        return View();
    }
4

2 回答 2

4

ASP.NET MVC 模型绑定以下列方式工作 - 它解析请求,尝试在其参数和 Action 参数之间找到名称到名称对应的名称,如果找到则实例化后者。您没有发送带有 name 的参数jsonReq,因此您无法在操作方法中接收到某些内容。

如果您真的想在不让 ASP.NET MVC 为您解析的情况下使用 plan json 字符串,您有两种选择:

  1. 通过HttpContext.Request内部操作访问它
  2. 编写自定义模型绑定器,将请求主体映射到jsonReq参数
于 2013-03-01T08:50:23.497 回答
1

该请求将没有名为 jsonReq 的值,因此不知道将 json 映射到该操作参数。

因为您的 JSONModel 将具有与进入请求的 JSON 命名值相匹配的属性名称,因此我们填充了该对象。

于 2013-03-01T08:44:15.147 回答