C# 警报框问题
如何先显示alertbox,然后注销C# 警报框问题,c#,.net,messagebox,alert,C#,.net,Messagebox,Alert,如何先显示alertbox,然后注销 if (machineID.Count != 0) { checkMachineGrpState(machineID); else { Response.Write("<script>alert('You are being logged out')</script>");
if (machineID.Count != 0)
{
checkMachineGrpState(machineID);
else
{
Response.Write("<script>alert('You are being logged out')</script>");
GoSignOut();
}
}
private void GoSignout()
{
FormsAuthentication.SignOut();
Session.Abandon();
Response.Redirect("~/Default.aspx");
}
if(machineID.Count!=0)
{
检查machinegrpstate(machineID);
其他的
{
响应。写入(“警报(‘您正在注销’)”);
GoSignOut();
}
}
私有无效GoSignout()
{
FormsAuthentication.SignOut();
会话。放弃();
Response.Redirect(“~/Default.aspx”);
}
在这里,如果我不调用GosignOut函数,我可以看到警报框,但当我调用signout时,它不会显示警报框,而是简单地注销
所以我在想,如果有一种方法可以让我先看到alertbox,然后当我按下OK时,它应该在我的代码中调用signout函数。。。谢谢使用调用此注销代码的服务器端按钮的clientclick,然后返回true e、 g
重新考虑你想要的。试试这个,我还没有测试过session.about和Signout的使用(这可能会迫使你进入登录页面)
if(machineID.Count!=0)
{
检查machinegrpstate(machineID);
其他的
{
GoSignOut();
Page.ClientScript.RegisterStartupScript(this.GetType(),“重定向”,“警报('您正在注销');window.location.href='”+ResolveUrl(“~/Default.aspx”)+“;”;
}
}
私有无效GoSignout()
{
FormsAuthentication.SignOut();
会话。放弃();
}
如果您需要允许重定向转到登录页面以外的页面(由于注销而被强制),您可以在web.config中添加如下内容。我不是100%确定您是否要允许此操作,因为它将不允许任何经过身份验证的用户访问该页面
<location path="whateverpage.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Response.write会将内容写入浏览器,当浏览器加载页面时,它会解析数据(呈现html并执行js)。如果浏览器未通过GET或POST(表单提交、链接、ajax)与服务器联系,则不会向服务器(asp.net webforms代码运行的地方)提供进一步的通信或反馈 发生的情况是,您正在将输出定向到客户端,但随后立即调用Response.Redirect,这样客户端就永远不会得到您的输出。相反,它只是立即重定向,然后显示default.aspx页面 您可以做的是仍然执行重定向,但将一些数据传递给客户端(querystring将是一种执行此操作的方法),然后default.aspx页面将知道如何查找该数据。如果找到该数据,它将完成任何必要的操作。在您的情况下,您希望它提醒用户
一种方法是重定向到“~/Default.aspx?alert=1”。在default.aspx的pageload中,它将查看querystring并查看是否存在值为1的警报键。如果是这种情况,它将执行您的警报。如何从我的代码隐藏中调用此警报。。。就像我的else条件啊,没有看到else,是什么触发了你显示的代码,是一个按钮点击吗?如果是这样,为什么他们不会被注销?不,这不是一个按钮点击,这是发生在页面加载。。这就是问题所在。。。警报消息上有一个按钮“OK”…嗯,不确定您是否可以这样做,您在呈现任何客户端脚本之前进行重定向,本质上,如果命中else子句,浏览器将永远看不到这一点,也许您可以改为重定向到已注销的页面?它已被弃用,而不是过时,但经过编辑以使用建议的调用,不确定是否值得否决,希望它能解决您的问题听起来您对整个客户机/服务器关系或ASP.NET webforms的工作方式没有把握。我真的建议您研究webforms是如何工作的,代码隐藏是如何在asp.net webforms页面生命周期中发挥作用的,以及其他类似的主题。在那之后,这种问题对你来说真的很容易。
if (machineID.Count != 0)
{
checkMachineGrpState(machineID);
else
{
GoSignOut();
Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "<script>alert('You are being logged out');window.location.href='" + ResolveUrl("~/Default.aspx") + "';</script>");
}
}
private void GoSignout()
{
FormsAuthentication.SignOut();
Session.Abandon();
}
<location path="whateverpage.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>