2011-12-14 2 views
0

В моей .aspx:Вызов метода из .ashx -> response.write файла

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 метод из события щелчка она работает. Но когда я называю это кодом, ничего не происходит. Полагаю, мне почему-то нужно вызвать обратную передачу? Или в чем проблема? Спасибо

+1

Не могли бы вы дать нам пример кода того, как вы его вызываете из события click и как вы его вызываете из кода (каким способом)? –

+0

@ RăzvanPanda 'SystemAuditView.DoStuff (doc);' from code beind. По щелчку - это стандартное событие click на кнопке asp: – Johan

+0

. Измените свой ответ, добавив код, который вы используете для кнопки asp: и код, который вы используете в обработчике OnClick. На каком событии вы называете 'SystemAuditView.DoStuff (doc);' от кода позади? –

ответ

0

Попробуйте создать объект для SystemAuditView, а затем попытайтесь получить доступ к методу DoStuff.

Поскольку DoStuff является распространенным методом, вы должны поместить этот код в папку App_Code.

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

+0

Проблема заключается в разнице между вызовом 'DoStuff()' из кода VS, вызывающего 'DoStuff (объект отправителя, eventargs e)' от кнопки. Работает только кнопка. – Johan

0

, не зная вашу страницу или имена пространства имен или класса, чтобы выяснить, какая из SystemAuditView, я бы сказал, вы пропустили шаг в «SystemAuditView.DoStuff()»

Например, для вызова метод с полным именем, вы должны закодировать: Page.namespace.class.method(), чтобы вызвать его.

Если вы не хотите этого делать, вам нужно связать страницы путем наследования или использования.

Смежные вопросы