MVC4向后台传输数据(POST)

前端

复制代码
const xhr = new XMLHttpRequest()
                const fileName = '小题分表.xls'
                xhr.open('post', '@Url.Action("ExportData")', true)
                xhr.responseType = 'blob'
                //xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8')
                let self = this;
                let data = {
                    columns: self.columns,
                    students: self.data,
                    title: "小题分表"
                }
                var param = JSON.stringify(data);

                let ss = new FormData();
                ss.append('data', param);

                xhr.send(ss)
                xhr.onload = function () {
                    debugger
                    const type = xhr.getResponseHeader('Content-Type')

                    const blob = new Blob([this.response], { type: type })
                    if (typeof window.navigator.msSaveBlob !== 'undefined') {
                        window.navigator.msSaveBlob(blob, fileName)
                    } else {
                        const URL = window.URL || window.webkitURL
                        const objectUrl = URL.createObjectURL(blob)
                        if (fileName) {
                            var a = document.createElement('a')
                            // safari doesn't support this yet
                            if (typeof a.download === 'undefined') {
                                window.location = objectUrl
                            } else {
                                a.href = objectUrl
                                a.download = fileName
                                document.body.appendChild(a)
                                a.click()
                                a.remove()
                            }
                        } else {
                            window.location = objectUrl
                        }
                    }
                }
复制代码

后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[AllowAction]
        [HttpPost]
        public FileResult ExportData(string data)
        {
            
            var dataString = data.ToString();
            var paras = new
            {
                Title="",
                Columns = EmptyArr<string>(),
                Students = EmptyArr<Dictionary<string, string>>()
            };
 
            paras = JsonConvert.DeserializeAnonymousType(dataString, paras);
 
            var dt = new DataTable();
 
            foreach (string item in paras.Columns)
            {
                dt.Columns.Add(item);
            }
            
            foreach (Dictionary<string, string> item in paras.Students)
            {
                var row = dt.NewRow();
 
                foreach (var key in item.Keys)
                {
                    row[key] = item[key];
                }
                dt.Rows.Add(row);
            }
 
            var stream = dt.SaveToMemoryStream(paras.Title);
            return File(stream, "application/ms-excel", "成绩单.xls");
        }

  

1
2
3
4
5
6
7
8
9
public static T[] EmptyArr<T>()
        {
            return EmptyArray<T>.Value;
        }
 
        internal static class EmptyArray<T>
        {
            public static readonly T[] Value = new T[0];
        }

  

posted @   贾平凡  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示