将复杂对象数组传递到 ASP.NET MVC 控制器
在此场景中,您寻求将复杂对象数组传递给控制器动作。为此,需要执行几个步骤。
准备视图
问题中提供的代码已经准备了一个对象数组。这里的关键是将这个数组转换为控制器可以解析的 JSON 格式。为此,请使用 jQuery 库中的 $.toJSON() 函数,如解决方案改进的视图代码所示:
function getplaceholders() { // ... var postData = { widgets: results }; $.ajax({ // ... data: $.toJSON(widgets), // ... }); }
装饰控制器操作
为了让控制器动作接受并处理JSON数据,需要用自定义属性来修饰。在本例中,我们使用 JsonFilter 属性:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)
Param 属性指定将接收 JSON 数据的参数名称,JsonDataType 定义反序列化所需的数据类型。
自定义属性功能
JsonFilterAttribute 实现拦截 HTTP 请求并检查是否包含 JSON 内容。如果是这样,它会使用 Json.NET 中的 JsonConvert.DeserializeObject 将 JSON 反序列化为指定的数据类型,并将其分配给相应的操作参数。
public class JsonFilter : ActionFilterAttribute { // ... public override void OnActionExecuting(ActionExecutingContext filterContext) { // ... var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } }
按照以下步骤,您可以成功传递复杂的数组对象从您的视图到您的 ASP.NET MVC 控制器。
以上是如何使用 JSON 将复杂对象数组传递到 ASP.NET MVC 控制器?的详细内容。更多信息请关注PHP中文网其他相关文章!