asp.net MVC 4中的HttpPost

时间:2013-03-01 08:39:34

标签: c# asp.net-mvc json

我正在测试日历应用程序上的推送通知。当我在日历应用程序上创建一个事件时,我的网站会获得一个带有JSON字符串的HttpPost请求。我编写了这样的代码但是我无法在我的action方法中收到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();
    }

2 个答案:

答案 0 :(得分:4)

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

如果你真的想使用plan json字符串而不让ASP.NET MVC为你解析它,你有两个选择:

  1. 通过操作
  2. 中的HttpContext.Request访问它
  3. 编写将请求正文映射到jsonReq参数
  4. 的自定义模型绑定器

答案 1 :(得分:1)

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

在哪里,您的JSONModel将具有与请求中的JSON命名值匹配的属性名称,因此我们填充了对象。