2013-03-01 106 views
3

我正在测试日历应用程序上的推送通知。当我在日历应用程序上创建事件时,我的网站用JSON字符串获取HttpPost请求。我编写了这样的代码,但无法在我的操作方法中收到JSON字符串。在asp.net MVC中的HttpPost 4

 [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(); 
    } 
+1

请添加您的ajax请致电 – 2013-03-01 08:42:17

+2

您的问题是什么?正确的方法是使用模型。 – 2013-03-01 08:44:16

+0

@DarinDimitrov,我的问题:如果我不知道结构怎么办?那么我无法创建一个模型吗?谢谢。 – dotnetrocks 2013-03-01 08:51:02

回答

4

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

如果你真的想要,没有让ASP.NET MVC解析它为您的使用计划JSON字符串的工作,你有两个选择:

  1. 通过HttpContext.Request访问它的作用
  2. 编写自定义的模型绑定内将请求主体映射到jsonReq参数
1

请求将不会有一个名为jsonReq值,所以不知道该映射JSON到动作参数。

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