单击有效链接时,ASP.Net无URL重定向

时间:2010-12-09 21:40:01

标签: c# asp.net web-applications webforms

这与另一篇文章有​​关,我无法在webform中设置代码隐藏的URL的绝对路径,但我能够解决它。我在服务器共享上有一个pdf文件,我希望链接指向,URL如下:

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

我通过手动将其添加到浏览器的地址栏来验证pdf是否正确打开。输入后,pdf会在我的浏览器中按预期打开。但是,当我尝试点击我的网络表单中的链接时,没有任何反应。我比较了链接中的URL字符串和我在浏览器中输入的内容,两者都是相同的。为什么锚不会重定向到指定的位置,而是在地址栏中手动输入?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

如果您的网页由远程服务器提供,但包含指向本地文件的链接,most modern browsers会出于安全原因拒绝浏览这些链接。

您可能必须从服务器而不是客户端计算机上提供链接内容才能使其正常工作。

答案 1 :(得分:0)

答案 2 :(得分:0)

以下是一些C#代码,用于扫描目录内容并构建指向服务器上文件夹内文件的链接。听起来你只有一个文件,但它仍然可以正常工作,你可以根据需要进行调整。

显然,这是为了从文件夹中的文件构建一个链接列表,这对你的例子来说肯定有点过分,但也许它会给你一些想法。

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();

在你的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>