在asp.net MVC 4中的HttpPost

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

1
请添加您的 AJAX 调用。 - K D
2
你有什么问题吗?正确的方法是使用模型。 - Darin Dimitrov
@DarinDimitrov,我的问题是:如果我不知道结构怎么办?那我就无法创建模型了吧?谢谢。 - dotnetrocks
你怎么不知道结构呢?难道不是你发送请求的人吗? - Darin Dimitrov
日历应用正在向我的动作方法发送HttpPost请求。我不希望我的方法对其进行解析,我希望得到纯字符串。谢谢!! - dotnetrocks
2个回答

4
ASP.NET MVC模型绑定的工作方式如下:它解析请求,尝试在其参数和Action参数之间找到一个名称对应关系,如果找到,则实例化后者。你没有发送名为jsonReq的参数,所以你不能在你的Action方法中接收任何东西。
如果你真的想使用纯json字符串而不让ASP.NET MVC解析它,你有两个选择:
  1. 在action内部通过HttpContext.Request访问它
  2. 编写自定义模型绑定器,将请求体映射到jsonReq参数

1
该请求没有名为jsonReq的值,因此不知道将json映射到该操作参数。
而您的JSONModel将具有与进入请求的JSON命名值匹配的属性名称,因此对象被填充。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接