1

如何将数据集传递给通用处理程序?我不想使用会话或视图状态来做到这一点。

我正在尝试返回从输入数据集转换的 excel 文件作为响应。

我已经将数据集内容显示为一个网格中的报告,该网格使用用户设置的一些标准进行过滤。由于查询很昂贵,我也不想在处理程序中执行相同的操作。

如果我可以通过引用处理程序来传递数据集会更好吗?

4

2 回答 2

0

不能通过,需要缓存结果

您不想使用会话的任何原因?

于 2012-11-06T11:52:16.127 回答
0

除了创建处理类的对象并分配给它之外,我找不到任何将数据集传递给 ashx 的方法。然后我调用了对象的 ProcessRequest 方法。它工作正常,构建成功。但是当我尝试发布网站时,代码给出了找不到类名的错误。代码如下所示。

//this is working fine in VS (build succeeded and ProcessRequest returned the file!) 
//but didn't compile only on publishing
MyHandler handlerObj = new myHandler();
handlerObj.DataSource = myDataset;
handlerobj.ProcessRequest(Context);

我通过用普通的 c# 类替换通用处理程序解决了这个问题,该类具有接受上下文和数据集的方法。然后我在类中调用该方法,将文件流写入 Context.Response 中,它工作得很好。该类的作用与处理程序相同,无需从 IHttpContext 继承

public void ProcessDownload(HttpContext context, DataSet DataSource)
{
    context.Response.Clear();
    context.Response.ContentType = "application/vnd.ms-excel";
    MemoryStream file = getExcelMemStream(DataSource);
    context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "myFile.xls"));
    context.Response.BinaryWrite(file.GetBuffer());
    context.Response.End();
}
于 2012-11-09T12:59:21.270 回答