在asp.net中使用超链接下载文件时处理异常

时间:2013-11-16 09:31:56

标签: c# asp.net exception hyperlink filenotfoundexception

我正在使用网格中的超链接,我正在下载已存储在我的应用程序文件夹中的文件。当文件存在于文件夹中时它工作正常但如果测试我删除了文件,然后尝试下载我收到错误The resource cannot be found.并且我的页面崩溃。如何处理此文件未找到的异常?我也在我的PageLoad上应用了调试点,但调试并没有到那里。

这是我的aspx代码

<asp:TemplateField HeaderText="DOWNLOAD">
                    <ItemTemplate>
                        <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%# Eval("PATH") %>' >Download</asp:HyperLink>
                    </ItemTemplate>
                    <HeaderStyle BorderWidth="1px" BorderStyle="Dotted" BorderColor="#DDDDDD" Font-Size="14px"
                        ForeColor="#333333" Font-Names="Calibri" />

                    <ItemStyle HorizontalAlign="Center" Width="5%" BorderWidth="0px" ForeColor="#333333"
                        Font-Names="Calibri" Font-Size="14px"></ItemStyle>

                </asp:TemplateField>

1 个答案:

答案 0 :(得分:1)

你可以试试这个

虽然不需要将ClientIDMode设置为Static。

<asp:HyperLink ID="HyperLink1" ClientIDMode="Static" runat="server" NavigateUrl='<%# Eval("PATH") %>' Target="_blank" >Download</asp:HyperLink>

检查页面加载(在bowser上)文件是否存在:

    jQuery(document).ready(function () {
        var url = jQuery("#HyperLink1").prop('href');
        jQuery.get(url).done(function () {
            // File exists so do nothing
        }).fail(function () { // doesn't exist so reset parameters accordingly
            jQuery("#HyperLink1").prop('href', 'javascript:void(0)');
            jQuery("#HyperLink1").attr('target', '_self');
        })
    });

将此标记放在head部分,这将引用Google托管的jquery库

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"
    type="text/javascript"></script>