У меня есть приложение, в котором я хочу, чтобы изображение загружалось, а не отображалось в браузере. response.writefile, кажется, выполняет это.
Однако, если я вызываю свой метод программно из моего обработчика ICallBackEvent, ничего не происходит. Не выдается никакой ошибки, она просто зависает.
Пошаговое выполнение кодов показывает, что метод работает, но файл не загружается и CallBack никогда не завершается. Я понятия не имею, что происходит.
protected void Button1_Click(object sender, EventArgs e)
{
downloadtest();
}
public string downloadtest()
{
string fileName = "";
string outPath = HttpContext.Current.Server.MapPath("~/images/") + @"logo.png";
fileName = "logo.png";
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
Response.WriteFile("logo.png");
Response.End();
return fileName;
}
Итак, это прекрасно работает, если я нажму кнопку.
Но если я позвоню downloadtest () из моего кода обратного вызова, ничего не произойдет.
Спасибо за любые идеи.
Вот мой код обратного вызова.
Это долго, но вот большие куски этого.
Сначала на стороне сервера ...
String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
String callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + ";}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
.......
#region ICallbackEventHandler Members
string CBResult = string.Empty;
public string GetCallbackResult()
{
return CBResult;
}
public void RaiseCallbackEvent(string eventArgument)
{
string[] args = eventArgument.Split(',');
string sessionidvar = args[0];
string Argument = args[1];
GeoCollection<Overlay> MapOverlays;
string statepath = OverlayClass.SetStatePath(sessionidvar);
CBResult = string.Empty;
switch (Argument)
.......
case "contribution":
downloadtest();
CBResult = "contribution";
break;
Клиентская сторона ....
function mapHeatLayerLoad(HEATLAYER) {
var sessionid = $('.logo').attr('data-SessionId');
var offset = $('#divMap').offset();
var HTML = "<div id='mapupdatingdiv'><H1>Map Updating...</H1>";
HTML += "<img id='mapLoaderGif' src='/images/ajax-loader.gif' alt='Image'/>";
HTML += "</div>";
$('#divMap').append(HTML);
CallServer(sessionid + "," + HEATLAYER, "");
}
..........
function ReceiveServerData(rValue) {
var argArray = rValue.split(',');
var map = Map1.GetOpenLayersMap();
var sessionid = $('.logo').attr('data-SessionId');
var PenetrationLayer = map.getLayer("PenetrationOverlay");
var ContributionLayer = map.getLayer("ContributionOverlay");
var PenChangeLayer = map.getLayer("PenChangeOverlay");
var ConChangeLayer = map.getLayer("ConChangeOverlay");
var CompetitorLayer = map.getLayer("CompetitorOverlay");
var HighLightLayer = map.getLayer("HighLightDynamicOverlay");
var ZipBordersLayer = map.getLayer("ZipBordersOverlay");
var PSALayer = map.getLayer("PSAOverlay");
var SSALayer = map.getLayer("SSAOverlay");
var WaterLayer = map.getLayer("WaterOverlay");
var HighwaysLayer = map.getLayer("HighwaysOverlay");
var ASCIconLayer = map.getLayer("ASCIconOverlay");
var HospitalIconLayer = map.getLayer("HospitalIconOverlay");
var ASCLayer = map.getLayer("ASCOverlay");
var HospitalsLayer = map.getLayer("HospitalsOverlay");
var ClientLayer = map.getLayer("ClientOverlay");
$('#mapupdatingdiv').fadeOut('slow', function () { $('#mapupdatingdiv').remove(); });
switch (argArray[0]) {
........
case "contribution":
map.getLayer("ContributionOverlay").redraw(true);
BuildLegend(2);
break;
......