日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

json数组传递到后台controller

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。