C# 如何使用jquery呈现响应流?
我有这个C# 如何使用jquery呈现响应流?,c#,asp.net,jquery,C#,Asp.net,Jquery,我有这个 MemoryStream export = new MemoryStream(); iCalendarSerializer serializer = new iCalendarSerializer(iCal); serializer.Serialize(export,System.Text.Encoding.UTF8); return export; 因此,我使用C#DDay.iCal库导出日历。Serialize接收一个“流”,所以我给它传递了一个内
MemoryStream export = new MemoryStream();
iCalendarSerializer serializer = new iCalendarSerializer(iCal);
serializer.Serialize(export,System.Text.Encoding.UTF8);
return export;
因此,我使用C#DDay.iCal库导出日历。Serialize接收一个“流”,所以我给它传递了一个内存流
我现在有一个通用处理程序,它调用包含上述代码的方法
public class CalendarHandler : IHttpHandler
{
private Calendar service;
private Membership membershipS;
public void ProcessRequest(HttpContext context)
{
service = new Calendar ();
membershipS = new Membership (null);
string userName = context.User.Identity.Name;
Guid userId = membershipS.GetUsersId(userName);
context.Response.ContentType = "text/calendar";
// calls the export calendar(the code that showed above that uses dDay ical.
var t = service.ExportCalendar(userId);
t.WriteTo(context.Response.OutputStream);
}
public bool IsReusable
{
get
{
return false;
}
}
}
因此,现在我将icalendar写入输出流。现在我有一个jquerypost,它使用这个方法,现在我不确定如何获取jquerypost将获得的OutputStream结果,并使其弹出一个保存对话框
$('#ExportCalendar').click(function(e)
{
$.post('../Models/CalendarHandler.ashx', null, function(r)
{
});
return false;
});
我不认为AJAX帖子会导致出现文件保存对话框。这是因为AJAX帖子是用于以编程方式发出web请求的,并且是在幕后进行的(也就是说,在用户不知情的情况下) 尝试将链接更改为常规(非AJAX)链接,例如:
<a href="CalendarHandler.ashx">Save Calendar</a>
您还需要设置contentdispositionheader以获得nicefilesave对话框。有关更多信息,请参阅此链接:
我认为AJAX帖子不会导致出现文件保存对话框。这是因为AJAX帖子是用于以编程方式发出web请求的,并且是在幕后进行的(也就是说,在用户不知情的情况下) 尝试将链接更改为常规(非AJAX)链接,例如:
<a href="CalendarHandler.ashx">Save Calendar</a>
您还需要设置contentdispositionheader以获得nicefilesave对话框。有关更多信息,请参阅此链接:
不能通过ajax弹出文件对话框。但是,您可以执行以下操作:
document.location = yourRequestUrl
这将生成一个对话框。如果你真的需要它成为一个帖子,使用
$(this).parent("form").submit()
作为您的单击处理程序
确保将context.Response.ContentType设置为“text/ical”。这将告诉浏览器如何处理响应。您不能通过ajax弹出文件对话框。但是,您可以执行以下操作:
document.location = yourRequestUrl
这将生成一个对话框。如果你真的需要它成为一个帖子,使用
$(this).parent("form").submit()
作为您的单击处理程序
确保将context.Response.ContentType设置为“text/ical”。这将告诉浏览器如何处理响应。@Eilon+1您在这种情况下是正确的。我构建了一个小的JS/Flash库,允许这样做,但它用于在客户端生成和保存文件。不在服务器上生成文件,然后将其保存在客户端:@Eilon+1您对这种情况是正确的。我构建了一个小的JS/Flash库,允许这样做,但它用于在客户端生成和保存文件。不在服务器上生成文件,然后将其保存到客户端: