将 asp.net mvc webapi 方法转换为 asp.net mvc 方法

Converting a asp.net mvc webapi method to asp.net mvc method

我在网络 api 控制器中有一个网络 api 方法,如下所示,它运行良好..

[Route("api/myquery")]
[HttpPost]
public HttpResponseMessage MyQuery([FromBody] string id)
{
    if (string.IsNullOrEmpty(id))
    {
        return new HttpResponseMessage(HttpStatusCode.BadRequest);
    }
    return new HttpResponseMessage(HttpStatusCode.OK);      
}

我想在我的 asp.net mvc 控制器中使用类似的控制器..

我尝试了以下..

[HttpPost]
public ActionResult MyQuery(string id)
{      
    return this.Content("");
}

发布的数据是从 javascript 中的相同方法发送的。

$.ajax("/api/myquery", {
        data: JSON.stringify(tmp1),
        type: "post", contentType: "application/json",
        success: function (result) { alert("Saved Successfully") },
        error: function (result) { alert("Error Saving") }
    });

但是,由于 MVC 没有 [FromBody] 标签,我无法访问正在发送的内容。虽然正在调用该方法,但 id 始终显示为 null...

试试这个

      [HttpPost]
      public ActionResult MyQuery(string id)
      {
          if (string.IsNullOrEmpty(id))
          {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
          }
          return Json("message","text/json",JsonRequestBehavior.AllowGet);      
      }

并在 ajax post 中更改 url(将 api 替换为您的控制器名称:例如,如果您在家庭控制器下,请输入 "home" )

$.ajax("home/myquery", {
    /*data: JSON.stringify(tmp1),*/
    data:  JSON.stringify({id:tmp1}),
    type: "post", contentType: "application/json",
    success: function (result) { alert("Saved Successfully") },
    error: function (result) { alert("Error Saving") }
    });