gpt4 book ai didi

javascript - 使用 Javascript Ajax 调用调用 MVC 操作来下载对象

转载 作者:行者123 更新时间:2023-11-28 02:38:04 24 4
gpt4 key购买 nike

我创建了一个简单的 MVC Controller 操作,它创建一个简单的 ics(日历)项目并通过 Controller 操作将其发送回。如下:

    public object GenerateICS(int myID)
{
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
Uri eventLink = new Uri("http://localhost:");
evt.IsAllDay = false;

evt.Start = new iCalDateTime(DateTime.Now);
evt.End = new iCalDateTime(DateTime.Now.AddDays(3));

evt.Summary = "MySummary";
evt.Url = eventLink;
evt.Description = "You know it";

Response.ContentType = "text/v-calendar";
Response.AddHeader("content-disposition", "attachment; filename=" + "Event" + ".ics");
iCalendarSerializer serializer = new iCalendarSerializer(iCal);
string result = serializer.SerializeToString(iCal);
Response.Write(result);
return Response;
}

因此,随着网站的运行,如果我访问:

http://localhost:21312/GenerateICS?myID=1 

这将在服务器端生成 ics 文件并将其传递回客户端,因此您会收到“您想从本地主机打开 blah.ics 吗?”。这正是我想要的。

我的问题是如何通过从 javascript 执行它来实现完全相同的效果。我有以下 ajax 调用:

 $.ajax({
url: "app/GenerateICS",
data: { myID: 1 },
success: function (data) {
//call is successfully completed and we got result in data
alert(data);
},
error: function (xhr, ajaxOptions, thrownError) {
//some errror, some show err msg to user and log the error
alert(xhr.responseText);

}
});

这完美地执行了 mvc Controller 。但它返回 ics 对 success 函数的响应。如何使用 ajax 调用 Controller 但拥有它,以便按照我描述的手动执行操作时的方式下载文件?

谢谢

最佳答案

感谢@heads5150提供的链接。

这只是设置浏览器位置的事实:

document.location.href = "app/GenerateICS?...";

关于javascript - 使用 Javascript Ajax 调用调用 MVC 操作来下载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13150096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com