小编典典

使用MVC 4 API控制器发布JSON

ajax

我有以下代码:

   $.ajax({


        type: "POST",
        url: "/api/slide",
        cache: false,
        contentType: "application/json; charset=utf-8",
        data: '{"Title":"fghfdhgfdgfd"}',
        dataType: "json",

这是我的控制者:

public class SlideController : ApiController
{

    // POST /api/Slide
    public void Post(string Title)
    {
    }

当我运行代码并调用/ api / Slide时,[Title]没有数据,并且为null。

如何将JSON发布到API控制器?

POST http://127.0.0.2:81/api/slide HTTP/1.1
Host: 127.0.0.2:81
Connection: keep-alive
Content-Length: 18
Origin: http://127.0.0.2:81
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Content-Type: application/json; charset=UTF-8
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://127.0.0.2:81/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

Title=fghfdhgfdgfd

阅读 231

收藏
2020-07-26

共1个答案

小编典典

定义视图模型:

public class SlideViewModel
{
    public string Title { get; set; }
}

然后让您的控制器操作将此视图模型作为参数:

public class SlideController : ApiController
{
    // POST /api/Slide
    public void Post(SlideViewModel model)
    {
        ...
    }
}

最后调用该动作:

$.ajax({
    type: 'POST',
    url: '/api/slide',
    cache: false,
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ title: "fghfdhgfdgfd" }),
    success: function() {
        ...    
    }
});

原因是从URI绑定了诸如字符串之类的简单类型。我还邀请您阅读以下有关Web
API中的模型绑定的文章

2020-07-26