【问题标题】:ASP.Net no URL redirect when valid link is clicked单击有效链接时,ASP.Net 没有 URL 重定向
【发布时间】:2011-05-23 03:35:07
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    这里有一些 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>
    

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 感谢 Frédéric,原来这是 Firefox 的安全违规问题。它在 Internet Explorer 中运行良好。
        猜你喜欢
        • 2013-04-10
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多