我有一个网页,我在其上应用了Ajax
启用了更新进度条的提交按钮。
在此提交按钮中单击我正在执行一些数据库操作,如果操作是
成功然后页面是server.transfer到另一个页面。
我的问题是我必须在此提交按钮和页面上实现进度条
应该重定向到另一个页面。但我得到page request manager exception on server .transfer
。
由于某些安全功能,我无法使用response.redirect
,请给我
解决方案或解决方法以避免页面请求管理器异常。
答案 0 :(得分:0)
根据我上面的评论,您无法在AJAX回发中更改页面。相反,您必须等待AJAX请求完成,您可以向其发送数据库选项的成功/失败结果。只使用ScriptManager公开的客户端API,您就可以使用以下脚本:
<script type="text/javascript">
<!--
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
// TODO: Validate args indicates success.
var isSuccess = true;
if (isSuccess)
window.location = "SecondPage.aspx";
}
// -->
</script>
将此脚本直接放在ScriptManager声明之后,根据您的需要进行修改以验证成功并直接转到正确的页面。
答案 1 :(得分:0)
感谢您的回复,您提出了一个很好的建议,我也找到了一个解决方案,我想分享这个问题,它对我来说很好。因为我的问题是维护隐藏的变量和server.transfer所以我把这样的代码。 我在更新面板中放置了2个按钮,在更新面板外放置了另一个按钮,因此当内部更新面板按钮的点击事件将触发时,它将执行数据库操作和 成功进行数据库操作后,它将从服务器端调用java脚本函数,如此
protected void btnProceed_Click(object sender, EventArgs e)
{
//do your db operations
//After successful operations call java script
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "displayNote"," <script language='JavaScript'>onAsyncPostclick();</script>", false);
}
Java脚本代码
<script type="text/javascript" language="javascript">
//ToDo: Used to call button on which we fire server.transfer
function onAsyncPostclick() {
var btnName = $get("<%=btnPostBack.ClientID%>").name;
__doPostBack(btnName, "");
}
</script>
在这个JavaScript代码中,我已将回拨调用放在更新面板之外的另一个按钮上,并且在该按钮的点击事件中,我正在触发服务器。转移到这样的新页面
//Implemented for button Submit (outside of Update panel) click
protected void btnSubmit_Click(object sender, EventArgs e)
{
Server.Transfer("NewPage.aspx");
}
通过上面的方式,我可以在启用了ajax的回发点击上调用server.transfer,我从页面请求管理器异常中保存了我的代码。我认为这是解决问题的方法,但它可以满足我的要求。