我真的是asp.net的新手。我正在使用Visual Studio 2012。
我创建了一个登录页面,有两个按钮Login
和Exit
。
当我单击Exit
按钮时,必须关闭应用程序并停止调试。
我的尝试:referred
我知道在这个问题的指定链接上还有其他解决方案,但我更喜欢以下方法。
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterOnSubmitStatement(typeof(Page), "closePage", "window.onunload = CloseWindow();");
}
并在Login.aspx中编写以下javascript函数。
<script language="javascript" type="text/javascript">
function CloseWindow() {
window.close();
}
</script>
注意:如果单击退出按钮,上面的脚本工作正常,但应用程序也会在我单击Login
按钮时关闭,并且调试没有得到停止。
答案 0 :(得分:1)
分别处理两个按钮。使用登录按钮执行任何操作以提交页面并处理回发,但不要将任何事件绑定到CloseWindow()
功能。然后,只需创建并处理退出按钮,如:
<input type="button" onclick="CloseWindow();" value="Exit"/>
您的注释的简单答案是使用Internet Explorer作为调试工具栏中的默认启动浏览器。
与winforms应用程序不同,ASP.Net应用程序是无状态的。在浏览器中运行的代码不依赖于与Visual Studio调试器中运行的代码相同的资源。它们之间唯一的连接是浏览器向服务器发出的请求(VS 2012调试器将自身视为服务器或使用IISExpress)以及服务器作为这些请求的一部分发回的响应。
在大多数情况下,这意味着,当您关闭浏览器时,服务器会继续运行,等待更多请求。 Internet Explorer的工作方式与使用Visual Studio的其他浏览器略有不同。当Visual Studio启动的IE实例关闭时,调试器进程也会关闭。
如果你真的刚刚开始使用ASP.Net,你应该试试ASP.Net MVC framework。它在服务器端和客户端代码之间具有更清晰的分离,这可以帮助您避免某些类型的问题。
答案 1 :(得分:1)
您的网页正在按照您的要求行事。
在Page_Load
中,您致电:
ClientScript.RegisterOnSubmitStatement()
该方法会导致每个表单提交执行您提供的脚本;这意味着所有按钮在单击时都会运行CloseWindow
程序。
如果您只想让其中一个按钮关闭窗口,那么您应该只将CloseWindow
方法附加到其中一个按钮上。您从链接问题中选择的答案仅适用,因为表单上只有一个按钮。我建议你选择其中一个答案,例如:使用:
的OnClientClick =&#34;的javascript:window.close()的;&#34;
作为退出按钮的属性。