在MVC5中将JSON传递给WebApi

时间:2015-05-30 06:53:02

标签: c# jquery json asp.net-web-api

我正面临着将json数组从jquery传递到我的mvc5项目中的webapi的语法问题。

以下是我的代码: -

C#代码: -

//获取实例

    // GET: api/PostDatas
    public IQueryable<PostData> GetPostDatas()
    {
        return db.PostDatas;
    }

// POST实例

     // POST: api/PostDatas
    [ResponseType(typeof(PostData))]
    public IHttpActionResult PostPostData(PostData postData)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.PostDatas.Add(postData);
        db.SaveChanges();

        return CreatedAtRoute("DefaultApi", new { id = postData.postDataID }, postData);
    }

JQuery

  <script>
   function fnpostdata() {
    var model = {
        "userid": "01",
        "Description": "Desc",
        "photoid": "03"
    };
     $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json",
        url: "/api/PostDatas/",
        data: model,
        success: function (data) {
            alert('success');
        },
        error: function (error) {
            jsonValue = jQuery.parseJSON(error.responseText);
            jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 });
         }
      });
  }
     </script>

我无法使用jquery将数据发送到我的c#控制器,只需要理解语法。谢谢。

2 个答案:

答案 0 :(得分:1)

检查代码中的以下内容: 1)方法属性[HttpPost] 2)[FromBody]用于输入模型 3)检查PostData类,它应该包含userid,Description和photoid的公共属性,区分大小写的变量名称。

主要将您的AJAX请求代码更改为:

function fnpostdata() {
    var model = {
        "userid": "01",
        "Description": "Desc",
        "photoid": "03"
    };
     $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json",
        url: "/api/PostDatas/",
        data: JSON.stringify(model), //i have added JSON.stringify here
        success: function (data) {
            alert('success');
        },
        error: function (error) {
            jsonValue = jQuery.parseJSON(error.responseText);
            jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 });
         }
      });
  }

请告诉我,这对你有用吗?

答案 1 :(得分:0)

我在前一个项目的参数中包含了[FromBody]。 像这样:

[HttpPost]
public IHttpActionResult Register([FromBody]PostData postData)
{
     // some codes here
}

我能够从该表示法中读取JSON数据。