来自.ashx的调用方法 - > response.write文件

时间:2011-12-14 12:57:54

标签: c# asp.net ajax handler

在我的.aspx中:

public static void DoStuff(XmlDocument doc)
    {

    HttpResponse response = HttpContext.Current.Response;

        string xmlString = doc.InnerXml;

        string fileName = "ExportedForm.xml";

        response.StatusCode = 200;

        response.AddHeader("content-disposition", "attachment; filename=" + fileName);
        response.AddHeader("Content-Transfer-Encoding", "binary");
       // response.AddHeader("Content-Length", _Buffer.Length.ToString());

        response.ContentType = "application-download";
        response.Write(xmlString);
}

在我的handler.ashx中:

private void GenerateXml()
    {

        var JsonXmlData = HttpContext.Current.Request["objectToSend"];

        XmlDocument doc = JsonConvert.DeserializeXmlNode(JsonXmlData);

        SystemAuditView.DoStuff(doc); //systemauditview is the .aspx
    }

如果我从点击事件中调用DoStuff方法,则可以正常工作。但是,当我从代码后面调用它时,没有任何反应。我想我不知何故需要触发回发?或者这里的问题是什么?感谢

2 个答案:

答案 0 :(得分:0)

尝试为SystemAuditView创建对象,然后尝试访问DoStuff方法。

由于DoStuff是一种常用方法,因此您应将此代码放在App_Code文件夹中。

http://forums.asp.net/t/1291538.aspx

答案 1 :(得分:0)

在不知道你的页面或命名空间或类名的情况下找出哪一个是SystemAuditView,我会说你错过了一个步骤" SystemAuditView.DoStuff()"

例如,要调用具有全名的方法,您必须编写代码:Page.namespace.class.method()来调用它。

或者,如果您不想这样做,则需要通过继承或使用链接页面。