【问题标题】:ASP.NET: Exit application when press exit buttonASP.NET:按下退出按钮时退出应用程序
【发布时间】:2016-02-05 01:57:34
【问题描述】:

我真的是 ASP.NET 的新人。我正在使用 Visual Studio 2012。

我正在创建一个登录页面,是否有两个按钮 LoginExit

当我点击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 按钮时关闭,并且调试也没有停止,则上述脚本工作正常。

【问题讨论】:

  • 减 1,这就是你们欢迎新人进入 asp.net 世界的方式?

标签: javascript c# asp.net


【解决方案1】:

您的页面正在按照您的要求执行。

在您的Page_Load 中,您致电:

ClientScript.RegisterOnSubmitStatement()

该方法会导致每个表单提交执行您提供的脚本;这意味着您的所有按钮都将在单击时运行您的CloseWindow 过程。

如果您只希望您的一个按钮关闭窗口,那么您应该只将CloseWindow 方法附加到其中一个。您从链接问题中选择的答案仅有效,因为表单上只有一个按钮。我建议您选择其他答案之一,例如使用:

OnClientClick="javascript:window.close();"

作为退出按钮的属性。

【讨论】:

    【解决方案2】:

    分别处理这两个按钮。使用登录按钮做任何你想做的事情来提交页面并处理回发,但不要将任何事件绑定到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。它在服务器端代码和客户端代码之间有更清晰的分离,这可以帮助您避免其中一些类型的问题。

    【讨论】:

    • 非常感谢您的详细回答。收到错误Compiler Error Message: CS1026: ) expected
    • 我给你的例子只有两个匹配的括号,所以看起来你页面上的其他地方缺少“)”
    最近更新 更多