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中文网其他相关文章!