【发布时间】:2014-10-14 07:32:00
【问题描述】:
我在回发期间遇到页面未重定向的问题。
我有一个包含此内容的 aspx 页面:
<td class="tdinput" align="right">
<asp:Button ID="ButtonFrigiv" runat="server" Text="Frigiv sag" CssClass="button"
OnClientClick="verifyReleaseOtherEmployeesCase()" />
<asp:Button runat="server" ID="ButtonFrigivHidden" OnClick="ButtonFrigiv_Click"
Style="display: none;" UseSubmitBehavior="true" />
</td>
该页面还包含各种 UpdatePanel,但是上面的代码不包含在一个中。 可以看到有一个按钮正在显示,它调用以下 JavaScript:
function verifyReleaseOtherEmployeesCase() {
var logonUser = document.getElementById('<%= HiddenLogonUser.ClientID %>');
var lockedBy = document.getElementById('<%= HiddenLockedBy.ClientID %>');
var button = document.getElementById('<%= ButtonFrigivHidden.ClientID %>');
if (logonUser.value == lockedBy.value) {
button.click();
}
else if (confirm("Danish confirm message")) {
button.click();
}
else {
return;
}
}
所以基本上这个 JavaScript 找到上面的第二个按钮(它没有显示给用户)并点击它。 单击该按钮时,服务器上会到达以下事件处理程序:
protected void ButtonFrigiv_Click(object sender, EventArgs e)
{
NyeSagerDAC.FrigivSag(SagID, LogonUser);
Response.Redirect(LastList);
}
其中 LastList 是一个字符串,其中包含作为当前页面入口点的页面(有多个入口点)。 到达服务器方法并且该方法中的第一行完美执行,但是页面没有被重定向。 我已经使用事件处理程序中的以下代码对它是否可能被视为 AJAX 回调(不允许重定向)进行了一些测试:
HttpRequest request = HttpContext.Current.Request;
string header = request.Headers["X-MicrosoftAjax"];
字符串头的内容为空,并且在事件处理程序完成后调用 Page_Load。所以我认为这不是问题。
我还尝试注册一个启动脚本来让页面自行重定向。这已经通过各种方式进行了尝试:
Page.ClientScript.RegisterStartupScript(GetType(),"redirect",
"window.location.href='" + LastList + "'");
和
ScriptManager.RegisterStartupScript(this, this.GetType(), "redirect",
"window.location.href='" + LastList + "';", true);
但是,这些似乎都不起作用。 我唯一要做的就是删除 JavaScript 的 confirm() 部分并让它单击按钮。这导致页面被正确重新加载。但是,我需要询问用户是否真的想要解锁其他员工的任务。
所以我认为我的问题是:如何让页面重定向?或者,如何修改 JavaScript 以仍然要求用户确认并且不停止重定向工作?
解决方案采用 .NET 4.0 编码
提前致谢。
【问题讨论】:
标签: javascript asp.net .net c#-4.0 postback