2010-12-09 4 views
2

Ceci est lié à un autre message, j'ai eu du mal à définir le chemin absolu d'une URL à partir du code-behind dans un formulaire Web, mais j'ai été en mesure de le résoudre. J'ai un fichier pdf sur un partage du serveur que je voudrais que le lien pointe vers, l'URL est la suivante:ASP.Net non URL rediriger lorsqu'un lien valide est cliqué

file://///myServer/share/MyFile.pdf 

J'ai vérifié le pdf ouvre correctement en ajoutant manuellement à la barre d'adresse dans mon navigateur. Après l'avoir saisi, le pdf s'ouvre dans mon navigateur comme prévu. Lorsque j'essaie de cliquer sur le lien dans mon formulaire Web, rien ne se passe. J'ai comparé les chaînes d'URL du lien et ce que je tape dans mon navigateur, les deux sont les mêmes. Pourquoi l'ancre ne redirige-t-elle pas vers l'emplacement spécifié, mais le fait manuellement dans la barre d'adresse? Toute aide est appréciée.

Répondre

2

Si votre page est desservie par un serveur distant mais contient des liens vers des fichiers locaux, mostmodernbrowsers refusera de naviguer dans ces liens pour des raisons de sécurité.

Vous devrez probablement diffuser le contenu lié à partir du serveur au lieu de l'ordinateur client pour que cela fonctionne.

+0

Merci Frédéric, se révèle qu'il était une question de violation de la sécurité avec Firefox. Cela a bien fonctionné dans Internet Explorer. – kingrichard2005

0

Voici quelques code C# que j'utilise pour analyser le contenu d'un répertoire et créer un lien vers les fichiers qui se trouvent dans un dossier sur le serveur. On dirait que vous n'avez qu'un seul fichier, mais il fonctionnera toujours bien et vous pouvez le modifier si nécessaire.

De toute évidence, cela vise à créer une liste de liens à partir des fichiers dans un dossier et c'est certainement un peu exagéré pour votre exemple, mais peut-être qu'il vous donnera quelques idées.

DirectoryInfo di = default(DirectoryInfo); 
     FileInfo[] files = null; 
     DataTable dt = new DataTable(); 
     DataRow dr = null; 
     System.DateTime filedate = default(System.DateTime); 

     di = new DirectoryInfo(Server.MapPath("~/forms")); 
     files = di.GetFiles(); 

     dt.Columns.Add("name"); 
     dt.Columns.Add("filepath"); 
     dt.Columns.Add("filedate"); 


     foreach (FileInfo inf in files) 
     { 
      filedate = inf.LastWriteTime; 

      dr = dt.NewRow(); 
      dr["name"] = inf.Name; 
      dr["filepath"] = inf.FullName; 
      dr["filedate"] = String.Format("{0:MM/dd/yyyy}", filedate); 
      dt.Rows.Add(dr); 
     } 

     DataList1.DataSource = dt; 
     DataList1.DataBind(); 

Et sur votre page ASPX:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="1" GridLines="none"> 
       <HeaderTemplate> 
        <table> 
         <tr> 
          <td style="width: 450px"> 
           <asp:Label ID="label1" runat="server" Text="Form Name" Font-Bold="true"></asp:Label> 
          </td> 
          <td> 
           <asp:Label ID="label2" runat="server" Text="Creation Date" Font-Bold="true"></asp:Label> 
          </td> 
         </tr> 
        </table> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <table> 
         <tr> 
          <td style="width: 446px"> 
           <a target="_blank" href='http://yourwebserverpath.com/forms/<%# DataBinder.Eval(Container.DataItem, "name") %>'> 
            <%# DataBinder.Eval(Container.DataItem, "name") %></a> 
          </td> 
          <td style="padding: 0 0 0 5px"> 
           <%#DataBinder.Eval(Container.DataItem, "filedate")%> 
          </td> 
         </tr> 
        </table> 
       </ItemTemplate> 
       <FooterTemplate> 
        <table> 
         <tr> 
          <td style="width: 446px"> 

          </td> 
          <td style="padding: 0 0 0 5px"> 

          </td> 
         </tr> 
        </table> 
       </FooterTemplate> 
      </asp:DataList> 
Questions connexes