失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > json数组传递到后台controller

json数组传递到后台controller

时间:2024-01-27 19:49:15

相关推荐

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: functionIDs4 });

That's all.

如果觉得《json数组传递到后台controller》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。