ASP.NET MVC-异步发送post请求+文件下载

环境:

win10, .NET 6.0


前端向后台传递string型变量

前端:

javascript 复制代码
    function PasteSubmit() {
    	// 获取某个input的值
        var inName = document.getElementById("xx").value;
        // 获取某个元素的属性值
        var inSeq = document.getElementById("xxx").getAttribute("xxx");
        $.ajax({
            type: 'POST',
            url: "/Home/PasteSubmit",
            data: {
                inName: inName,
                inSeq: inSeq,
            },
            success: function (resp) {
            	console.log(resp);
            }
        });
    }

后台:(HomeController)

csharp 复制代码
[HttpPost]
public ActionResult PasteSubmit() {
    // 获取数据
    string name = Request.Form["inName"]; 
    string seq = Request.Form["inSeq"];
    System.Diagnostics.Trace.WriteLine(name);
    System.Diagnostics.Trace.WriteLine(seq);
    // do something
    // 返回的内容
    return Content("test");
}

前台向后台传递多个List

说明:先传递三个List,后台接收后做一些处理,然后回传字符串,将字符串写入文件,生成下载文件,自动下载。

前端:

html 复制代码
@{
// 定义
List<int> cstarts = new List<int>() { 1, 2, 3};
List<int> cends = new List<int>() { 4, 5, 6 };
List<string> cstrs = new List<string>() { "", "sss", "x"};
}

<!-- html内容略 -->

<button id="exportSeqBtn" onclick="exportSeq()" type="button">
    导出序列
</button>

<!-- js -->
<script>
    // 导出序列
    function exportSeq() {
        var starts = @Html.Raw(Json.Encode(cstarts));
        var ends = @Html.Raw(Json.Encode(cends));
        var strs = @Html.Raw(Json.Encode(cstrs));
        $.ajax({
            url: "/Home/ExportSeq",
            method: 'POST',
            data: JSON.stringify({
                vid: @Model.Id,
                cstarts: starts,
                cends: ends,
                cstrs: strs,
            }),
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                var blob = new Blob([data], { type: 'text/plain' });
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = 'sequence.fa'; // 下载文件的文件名
                link.click();
            },
            error: function (xhr, status, error) {
                alert('An error occurred while generating the file: ' + error);
            }
        });
    }
</script>

后端:

csharp 复制代码
[HttpPost]
public ActionResult ExportSeq(string vid, List<int> cstarts, List<int> cends, List<string> cstrs) {
	var txtContent = new StringBuilder();
    // do something
    txtContent.AppendLine(string.Join(",", cstarts));
    // 可以打印其他的看看
    return Content(txtContent.ToString(), "text/plain");
}
相关推荐
小钻风33662 分钟前
Spring Boot WebSocket 两种集成方式深度解析
spring boot·后端·websocket
IT_陈寒9 分钟前
Vite热更新失效?我在这坑里卡了一下午
前端·人工智能·后端
云烟成雨TD16 分钟前
Spring AI Alibaba 1.x 系列【55】Interrupts 中断机制:静态中断源码分析
人工智能·后端·spring
我命由我123451 小时前
PHP - PHP 基本随机数生成函数
开发语言·ide·后端·java-ee·php·intellij-idea·intellij idea
楼田莉子1 小时前
C#学习之C#入门学习
开发语言·后端·学习·c#
海上彼尚1 小时前
Nodejs也能写Agent - 6.基础篇 - Agent
前端·人工智能·后端·node.js
字节高级特工1 小时前
C++11(一) 革新:右值引用与移动语义
java·开发语言·c++·人工智能·后端
步步为营DotNet1 小时前
解锁.NET 11 新境:ASP.NET Core 10 在微服务安全通信的深化与实践
微服务·asp.net·.net
青云计划1 小时前
Synchronized 锁升级:从偏向锁到重量级锁的性能进化之路
java·后端
candyTong11 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构