首页 > 后端开发 > C++ > 如何使用 JSON 将复杂对象数组从 jQuery 发布到 ASP.NET MVC 控制器?

如何使用 JSON 将复杂对象数组从 jQuery 发布到 ASP.NET MVC 控制器?

Mary-Kate Olsen
发布: 2025-01-02 15:01:37
原创
249 人浏览过

How to Post an Array of Complex Objects from jQuery to an ASP.NET MVC Controller Using JSON?

jQuery 和 ASP.NET MVC:使用 JSON 发布复杂对象数组

问题:

如何将一组复杂对象从 ASP.NET MVC 控制器传递到jQuery AJAX 请求?控制器操作应该接受哪些参数?

解决方案:

要使用 jQuery 和 JSON 将复杂对象数组发布到控制器,请按照以下步骤操作:

  1. 将数组序列化为JSON:

    使用 JSON.stringify() 将对象数组转换为 JSON 字符串。

  2. 设置请求标头:

    指定Content-Type header为application/json; charset=utf-8.

  3. 使用 $.ajax() 方法:

    使用 $.ajax() 创建 AJAX 请求方法并提供 JSON 数据作为数据

控制器操作:

使用自定义属性 (JsonFilter) 装饰控制器操作以反序列化 JSON 数据。该属性应指定参数名称和 JSON 数据类型。

自定义属性(JsonFilter):

public class JsonFilter : ActionFilterAttribute
{
    public string Param { get; set; }
    public Type JsonDataType { get; set; }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.ContentType.Contains("application/json"))
        {
            string inputContent;
            using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream))
            {
                inputContent = sr.ReadToEnd();
            }
            var result = JsonConvert.DeserializeObject(inputContent, JsonDataType);
            filterContext.ActionParameters[Param] = result;
        }
    }
}
登录后复制

示例:

JavaScript:

function getplaceholders() {
    var widgets = [];
    // ... populate the array

    $.ajax({
        url: '/portal/Designer.mvc/SaveOrUpdate',
        type: 'POST',
        dataType: 'json',
        data: JSON.stringify(widgets),
        contentType: 'application/json; charset=utf-8'
    });
}
登录后复制

控制器操作:

[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)
{
    // ...
}
登录后复制

以上是如何使用 JSON 将复杂对象数组从 jQuery 发布到 ASP.NET MVC 控制器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板