【问题标题】:posting a JObject to an action将 JObject 发布到操作
【发布时间】:2012-09-25 16:00:36
【问题描述】:

我在读瑞克·斯特拉尔斯

http://www.west-wind.com/weblog/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods

我希望能够在动作中使用 JObject。 我写了一个这样的控制器

public class AlbumsController : Controller
{
    [System.Web.Http.HttpPost]
    public string PostAlbum(JObject jsonData)
    {
        return "success";
    } 
}

前端是这样的

当调用 ajax 时出现错误

       $("#a").click(function () { 
            var album = {
                AlbumName: "PowerAge",
                Entered: "1/1/1977"
            }
            $.ajax(
            {
                url: "Albums/PostAlbum",
                type: "POST",
                contentType: "application/json",
                data: JSON.stringify({ Album: album }),
                success: function (result) {
                    alert(result.Result);
                }
            });
        });

POST http://localhost:50066/Albums/PostAlbum 500 (Internal Server Error)jquery-1.7.1.js:8102 发送 jquery-1.7.1.js:8102 jQuery.extend.ajax jquery-1.7.1.js:7580 (匿名功能)相册:74 jQuery.event.dispatch jquery-1.7.1.js:3256 elemData.handle.eventHandle

【问题讨论】:

    标签: asp.net-mvc json json.net


    【解决方案1】:

    您的控制器应该派生自 ApiController,而不是 Controller

    public class AlbumsController : ApiController
    

    另外,如果您使用的是默认路由设置:

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
    

    我建议您使用 RESTful 动作名称:

    public class AlbumsController : ApiController
    {
        [HttpPost]
        public string Post(JObject jsonData)
        {
            return "success";
        } 
    }
    

    然后:

    $('#a').click(function () { 
        var album = {
            AlbumName: "PowerAge",
            Entered: "1/1/1977"
        }
        $.ajax({
            url: 'api/albums',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({ Album: album }),
                success: function (result) {
                    alert(result);
                }
            });
        });
        return false;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多