在doPostBack之后没有进行ajax调用

时间:2013-01-08 16:55:03

标签: c# javascript jquery asp.net

我正在让用户下载锚标签上的文件。在onclick事件中,我使用__doPostBack部分回发页面以返回用户可下载的文件。

现在我面临的问题是,当找不到文件时,页面重新加载并且未设置ajax调用。因此,简而言之,当浏览器在_doPostBack函数之后期待响应并且没有获得响应时,它会重新加载页面,但$ .ajax方法不会运行。我错过了什么?我应该对回复做些什么吗?或者有什么方法可以取消回复?请帮忙。

锚标记例如是

<a onclick="javascript:__doPostBack('AnnouncementAttachmentDownload','Ch 7 -Software Design2010.doc')">Ch 7 -Software Design2010.doc</a>

服务器端代码是

protected void Page_Load(object sender, EventArgs e)
{
    SetPageTitles(ModuleNames.NotSpecified, null, false, true, true, false);
    if (this.Request.Params["__EVENTTARGET"] == "AnnouncementAttachmentDownload")
    {
    string FileName = this.Request.Params["__EVENTARGUMENT"].ToString();
        string destinationPath = Server.MapPath("~/" + System.Web.Configuration.WebConfigurationManager.AppSettings["AnnouncementAttachmentsPath"]).ToString() + "\\";
        if (System.IO.File.Exists(destinationPath + FileName))
        {
            Response.AppendHeader("content-disposition", "attachment; filename=" + FileName);
            Response.TransmitFile(destinationPath + FileName);
            Response.End();
        }
        else
        {
            ClientScript.RegisterClientScriptBlock(this.GetType(), "NewScript", "alert('The requested file could not be found, please contact portal.production.support');", true);\\DOESNT WORK
        }

    }
}

else部分中的行,它只显示消息,但页面也会加载。

1 个答案:

答案 0 :(得分:0)

在找不到文件的时候,我使用Responce.Redirect将它再次重定向到当前页面,然后我将bool存储在会话变量中,并在pageload上检查会话变量是否包含某些值然后显示了这个消息。另外,我在上面的if表达式中也清除了会话。