按钮单击事件 没有任何反应

本文关键字:任何反 单击 事件 按钮 | 更新日期: 2023-09-27 18:36:04

我有一个问题,我的按钮点击将不起作用。我认为所有代码都是正确的,但是为什么单击时没有任何反应?代码是否适合显示消息,代码是否适合重定向到网站/网页?任何帮助非常感谢!

public delegate void myDelegate();
        public event myDelegate FindInfo;
    protected void btnOne_Click(object sender, EventArgs e)
            {
                FindInfo += new myDelegate(showFindInfoMessage);
                FindInfo += new myDelegate(showWebsite);
                FindInfo();
            }

public void showFindInfoMessage()
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('You will now be redirected to the website!');</script>");
        }
        public void showWebsite()
        {
            string web = "https://facebook.com/";
            Response.Redirect(web);
        }

.HTML

<asp:Button ID="btnOne" runat="server" Text="Find Info" OnClick="btnOne_Click" />

按钮单击事件 没有任何反应

你的代码看起来有点奇怪,但它应该按你的预期工作。我没有看到任何可以立即阻止它工作的东西。

首先是最简单的事情 - 是否有任何异常?在调试模式下从VisualStudio中运行站点,单击站点上的按钮,然后查看"输出"窗口。如果您在点击后看到任何"第一次机会例外"行,请尝试追逐并解决它们,或者将它们写下来并展示给我们。确保只有在单击按钮后才真正记录这些内容。站点启动时可能会记录一些异常。启动站点后,请确保"输出"窗口在单击按钮之前停止颤动。

接下来,您创建的任何其他按钮是否按预期工作?在此页面上?在其他页面上怎么样?您是否尝试过放置断点以查看此代码是否运行?在方法的第一行放置一个断点btnOne_Click(单击此处并按 F9,假设您有典型的热键),并尝试在其他方法(如 Page 的构造函数)中放置一些其他断点。然后尝试在"调试"模式下运行您的网站并单击按钮。检查触发了哪些断点。

如果根本没有遇到断点,那么您的 VisualStudio 和 Web 服务器没有配置为调试(糟糕),或者页面可能根本没有编译(例如,您可能正在运行它的旧副本)。

如果触发了某些断点,但未触发该按钮处理程序,请尝试观察单击该按钮时页面执行的操作或尝试执行的操作。如果您使用的是任何现代浏览器,它应该在某处有一个"开发人员工具"面板。例如,在 Chrome 中,按 F12。在这些开发工具中,找到一些将显示"网络操作"的选项卡或窗口。显示或刷新您的页面,检查是否捕获了一些 netwrok 操作。您应该至少注意到页面本身正在下载,状态代码为"200"。观察后,当一切都变得沉默时,"清除"日志(某处应该有一个按钮),以便您再次获得新鲜干净的视图,然后按下按钮。观察会发生什么。

如果该按钮在客户端有效,您将看到正在向服务器发送请求。观察响应代码。是200吗?404?500?所有这些都意味着不同的事情。使用代码报告。此外,如果有任何错误(状态代码 != 200),请尝试读取/复制所有详细信息。

如果按钮和服务器工作正常或几乎正常,则单击按钮后,您将看到一个请求发送回同一页面,后跟状态= 200。但是,如果 IIS 和 ASPX 正常,这将运行xxx_Click处理程序。所以你可能不会看到这种情况。

如果按钮根本不起作用并且没有发送任何请求,则呈现的 HTML 代码存在一些问题。返回浏览器中的开发工具,找到一个选项卡/窗口,允许您查看站点的原始HTML代码,然后找到该按钮。检查对其设置了哪些点击操作。如果您没有看到任何标签,请检查哪个 FORM 标签是该按钮的父级,并检查其"方法"和"操作"属性是否设置正确。如果方法/操作生成错误,浏览器可能会尝试将"点击"发送到错误的位置,甚至可能根本不尝试发送。

如果所有这些都没有显示任何有用的东西,那么请尝试...暂时用在任何情况下都应该有效的东西替换你的代码。在 MSDN 站点上查看示例。将您的页面代码备份到某个地方,并将其替换为此站点中的示例。将所有这些粘贴为 ASPX 文件,并从代码隐藏(ASPX.CS 文件)中删除所有内容,然后运行您的网站。此示例演示一个简单的按钮,并将一个处理程序附加到该按钮。检查它是否有效。应该的。你也可以再次观察我上面写的所有东西。如果该示例不起作用,那么,再次,我猜您的 IIS 或 ASP 安装已损坏。

您的代码工作正常。我把它放在一个测试项目中,它会重定向。如果您询问为什么看不到警报,那是因为页面需要回发以注册脚本,但是您在有机会这样做之前重定向到 facebook.com。您可以在页面加载时注册脚本,然后调用 JavaScript 函数来显示警报。

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        showFindInfoMessage();
    }
    public delegate void myDelegate();
    public event myDelegate FindInfo;
    protected void btnOne_Click(object sender, EventArgs e)
    {
        FindInfo += new myDelegate(showFindInfoMessage);
        FindInfo += new myDelegate(showWebsite);
        FindInfo();
    }
    public void showFindInfoMessage()
    {
        Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "scriptkey", "alert('You will now be redirected to the website!')");
    }
    public void showWebsite()
    {
        string web = "https://facebook.com/";
        Response.Redirect(web);
    }
}