Problema de hiperlink ASP.NET LinkButton
-
24-09-2019 - |
Pergunta
Os dois controles a seguir na minha página:
<asp:LinkButton ID="OpenLB" runat="server" >Open</asp:LinkButton>
<asp:HyperLink ID="OpenHL" runat="server">Open</asp:HyperLink>
Eu os defina durante a carga da página assim:
OpenLB.PostBackUrl = @"file:\\web\documents-emails\doc1.docx";
OpenHL.NavigateUrl = @"file:\\web\documents-emails\doc1.docx";
OpenHl funciona, ele abre o arquivo do Word.
O OpenLB não funciona, quando clico nele, recebo um erro de erro que diz:
O Windows Internet Explorer não pode encontrar o arquivo 'arquivo: //web//documents-emails//doc1.docx'. Verifique se o caminho ou o endereço da Internet está correto.
Parece que o URL é diferente ou algo assim, como posso consertar isso?
Solução
O linkbutton funciona postando a página da web de volta ao servidor usando o URL fornecido. Ele exibe o botão no estilo de um hiperlink, mas usa JavaScript para postar o formulário de volta no servidor no URL fornecido. Você não poderá usá -lo com um file:
URL, pois você não pode postar em um arquivo local. O hiperlink apenas cria uma âncora que resulta na localização do navegador sendo definido para o URL quando ele é clicado.
Outras dicas
UMA HyperLink
foi projetado para vincular a outra página ou arquivo. É simplesmente um invólucro para um <a>
marcação.
UMA LinkButton
foi projetado para postar a página e disparar um evento no lado do servidor.
Primeiro, verifique se você está usando o tipo correto de controle em cada situação.
Eu acho que é simplesmente que, em um caso, você está navegando para o arquivo, e isso abre como esperado o outro que você está pedindo para publicar Para o arquivo docx, quando deve ser um URL válido
O comportamento padrão do linkButton é postar de volta em uma página ASPX para lidar com o evento postal em resposta ao usuário final clicando no link. O postbackurl está em branco por padrão, indicando que o link posta novamente na página atual. Definir a propriedade Postbackurl destina -se a postagens cruzadas de página cruzada, caso em que você lidará com o evento de clique em outra página do APSX.