FineUI MVC 前端获取表格Json通过Post传递后台

 

首先规定前端传入Json格式

格式如下:
{“columns”:[“列1″,”列2″],”rows”:{“0”:{“列1″:”1″,”列2″:”2″},”2”:{“列1″:”11″,”列2″:”22”}}}

 

前端方法:

定义一个object 对象,用来存储 表格的数据,最后将对象转换成Json传递给后台

          var obj = {};
//存储行信息
            obj["columns"] = F.ui.Grid1.fields;
//用于存储行值
            var objrows = {};
//通过遍历行数据,将行值存储 objrows对象
            F.ui.Grid1.resolveRow(function (a) { objrows[a.index] = a.values });
//删除多余 objrows中的值(可能来源于样式等等)
            for (var i in objrows)
            {
                delete objrows[i]["样式1"];
            }
//用于存储 所有行
            obj["rows"] = objrows;    

//调用 post提交函数
doCustomPost(obj);

  FineUi 添加 Post请求,官方文档地址:https://mvc.fineui.com/#/Grid/ExcelRowCommandDownload

案例前端页面:

//  .net mvc 在 section body 中添加
//ExportToExcel 是控制器方法名,ExcelRowCommandDownload 是控制器
@using (Html.BeginForm("ExportToExcel", "ExcelRowCommandDownload", FormMethod.Post, new { id = "myform" }))
    {
        @Html.AntiForgeryToken()
        <input type="hidden" name="content" />
    }

 JS  doCustomPost 函数

   function doCustomPost(rowData) {
            // 自定义POST请求
               var myform = $(#myform);
            myform.find([name=content]).val(F.toJSON(rowData));
            myform[0].submit();
        }

 

后端解析 Json

      [HttpPost]
        [ValidateAntiForgeryToken]
        public DataTable ExportToExcelPost(string content)
        {
           
            JObject jarry = (JObject)JsonConvert.DeserializeObject(content);
            var dataTable =GetDataTableByJson(jarry["columns"],jarry["rows"]);
            return dataTable;    
        }

关于 Json转DataTable    GetDataTableByJson方法的,请转到这:https://www.cnblogs.com/Alex-Mercer/p/11858640.html