欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

json数组传递到后台controller

发布时间:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的这篇文章主要介绍了 json数组传递到后台controller 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

现前台有如下格式的数据需要传递到后台的controller,

1 public class UpdatePara 2 { 3   public int RoleID { get; set; } 4   public List<int> FunctionIDs { get; set; } 5 }

如果按照常规方式传递,后台的controller代码应该是下面这样的

1 public JsonResult Update(UpdatePara para) 2 { 3   var flag = BLLRolePermission.Update(para.RoleID, para.FunctionIDs); 4 return Json(new { success = flag }); 5 }

但是由于这里的FunctionIDs是个数组,如果按照上面这种方式接收参数,我们会发现para.FunctionIDs是null

为了正确获取参数值,我们需要自定义个过滤器,代码如下:

1 public class JsonFilter : ActionFilterAttribute 2 { 3 public string ParamName { get; set; } 4 public Type JsonDataType { get; set; } 5 6 public override void OnActionExecuting(ActionExecutingContext filterContext) 7 { 8 string inputContent; 9 var jss = new JavaScriptSerializer(); 10 11 using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)) 12 { 13 inputContent = sr.ReadToEnd(); 14 } 15 16 var result = jss.Deserialize(inputContent, JsonDataType); 17 18 filterContext.ActionParameters[ParamName] = result; 19 } 20 }

然后,对应的Action方法应该加上过滤器标记

1 [JsonFilter(ParamName = "para", JsonDataType = typeof(UpdatePara))] 2 public JsonResult Update(UpdatePara para) 3 { 4   var flag = BLLRolePermission.Update(para.RoleID, para.FunctionIDs); 5 6   return Json(new { success = flag }); 7 }

同时要注意下前台ajax传参的时候,json对象要序列化下

1 JSON.stringify({ 2 roleID: $('#roleID').val(), 3 functionIDs: functionIDs 4 });

That's all.

 

转载于:https://www.cnblogs.com/huanghaihua/p/5028677.html

总结

以上是生活随笔为你收集整理的json数组传递到后台controller的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。