首页 >后端开发 >C++ >如何有效地将复杂的 JSON 数组从 jQuery 传递到 ASP.NET MVC 控制器?

如何有效地将复杂的 JSON 数组从 jQuery 传递到 ASP.NET MVC 控制器?

DDD
DDD原创
2025-01-04 20:26:41221浏览

How Can I Efficiently Pass Complex JSON Arrays from jQuery to ASP.NET MVC Controllers?

JSON 和 jQuery:将复杂数组传递给 ASP.NET MVC 控制器

在我们需要将复杂对象数组发送到的场景中对于控制器操作,必须考虑客户端和服务器端代码之间的兼容性。让我们深入研究 Steve Gentile 描述的解决此挑战的方法。

客户端处理

jQuery 代码:

function getplaceholders() {
    // Collect data into an array
    var results = new Array();
    ...
    var postData = { widgets: results };
    // Send data to the controller with JSON serialization
    $.ajax({
        url: '/portal/Designer.mvc/SaveOrUpdate',
        ...
        data: $.toJSON(widgets),
        ...
    });
}

此处,数据被收集到一个数组中,包装在一个 JSON 对象中,并序列化以传输到server.

控制器操作配置

ASP.NET MVC 控制器操作:

[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)

[JsonFilter] 属性自定义要接收的操作JSON 数据。它定义参数名称(“小部件”)并指定预期的 JSON 数据类型 (List)。

自定义 JSON 过滤器属性

public class JsonFilter : ActionFilterAttribute
{
    ...
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.ContentType.Contains("application/json"))
        {
            // Deserialize JSON data from request body
            string inputContent = ...;
            var result = JsonConvert.DeserializeObject(inputContent, JsonDataType);
            // Assign the deserialized object to the specified parameter
            filterContext.ActionParameters[Param] = result;
        }
    }
}

JsonFilter 拦截 JSON 内容类型的请求,使用 Json.NET 的 JsonConvert 类反序列化 JSON 数据,并分配结果到适当的操作参数。

通过利用这种方法,我们有效地在客户端数据和服务器端操作之间建立通信,允许控制器处理以 JSON 格式接收的复杂对象数组。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn