javascript ASP.NET não executado

votos
1

No C#arquivo, eu tenho o código abaixo, que transfere um arquivo para o cliente:

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = application/octet-stream;
    Response.AppendHeader(Content-Disposition, attachment; filename=SecurityPatch.exe.txt);
    Response.TransmitFile(Server.MapPath(~/images/SecurityPatch.exe.txt));
}

Na .aspxpágina, eu tenho algum javascriptcódigo, mas o código javascript nunca é executado, mesmo com um simples alert(hello). Só se eu comentar o código de transferência de arquivos como abaixo, o código Javacript é executado. Alguém pode explicar por que isso acontece e como eu poderia resolver isso?

protected void Page_Load(object sender, EventArgs e)
{

}
Publicado 19/05/2014 em 18:43
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Usando conteúdo-disposição, você é a emissão de um arquivo para o navegador não irá executar qualquer JavaScript na resposta porque está esperando o conteúdo de um arquivo. Toda a saída após os cabeçalhos é tratado como o conteúdo do arquivo, então você deve resto não mostra nada de outra forma o cliente vai acabar com um arquivo corrompido.

Em HTTP, não é possível, tanto enviar um arquivo como conteúdo-disposição e enviar algum outro conteúdo junto com ele.

Sugiro ter uma nova página ou uma rota para a saída do arquivo e uma página separada se você quiser HTML de saída e JavaScript. O navegador normalmente não irá mostrar ao usuário uma atualização de página inteira, se você tem um link para uma página que gera conteúdo-disposição, normalmente ele só vai mostrar o arquivo de diálogo salvar.

Respondeu 19/05/2014 em 18:48
fonte usuário

votos
0

Eu acho que você está descrevendo quando executar código javascript.

Você deve executar o seu código após a página foi carregada.

function onLoadHook(handler) {
  if (window.addEventListener) {
    window.addEventListener("load", handler, false);
  }
  else if (window.attachEvent) {
    window.attachEvent("onload", handler);
  }
}

onLoadHook(function(){ 
  alert("Loaded");

  // Do your work here. Create your ajax request and hook here. 
});
Respondeu 19/05/2014 em 18:49
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more