按钮onClick事件什么也没发生

时间:2015-01-02 23:08:16

标签: c# asp.net

我遇到一个问题,我的按钮点击无论如何都无法正常工作。我认为所有的代码都是正确的,但为什么在点击它时什么也没发生?代码是否适合显示消息,是否可以重定向到网站/网页?任何帮助非常感谢!

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" />

2 个答案:

答案 0 :(得分:0)

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

最简单的事情 - 是否有任何例外?在VisualStudio中以调试模式运行站点,单击站点上的按钮,然后查看&#34;输出&#34;窗口。如果你看到任何&#34; First Chance Exception&#34;单击它后出现的线条,然后尝试追逐并解决它们,或者将它们写下来并显示给我们。确保仅在您单击按钮后才能记录这些内容。站点启动时可能会记录一些异常。启动站点后,请确保在单击按钮之前“输出”窗口停止抖动。

接下来,您创建的任何其他按钮是否按预期工作?在本页面?其他页面上的情况如何?您是否尝试过放置断点以查看此代码是否完全运行?在btnOne_Click方法的第一行放置一个断点(单击那里然后按F9,假设你有典型的热键),并尝试在其他方法中放置一些其他断点,如Page的构造函数。然后尝试在&#34; debug&#34;中运行您的网站模式并单击按钮。检查哪些断点被触发。

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

如果某些断点被触发但是没有一个按钮处理程序,则尝试观察当您单击该按钮时页面执行或尝试执行的操作。如果您使用的是任何现代浏览器,它应该有一个&#34;开发人员工具&#34;面板某处。例如,在Chrome中,按F12。在那些开发工具中,找到一些标签或窗口,它们将显示&#34;网络操作&#34;。显示或刷新页面,检查是否捕获了某些网络操作。你应该注意到至少页面本身是用&#34; 200&#34;状态代码。观察完之后,当一切都变得沉默时,&#34;清除&#34;日志(某处应该有一个按钮),这样你就可以再次看到一个清新的视图,然后按下按钮。观察会发生什么。

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

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

如果该按钮根本不起作用且未发送任何请求,则呈现的HTML代码存在一些问题。返回浏览器中的dev-tools,找到一个标签/窗口,可以查看该站点的原始HTML代码,并找到该按钮。检查在其上设置的单击操作。如果您没有看到,请检查哪个FORM标记是该按钮的父标记,并检查其&#34;方法&#34;和&#34;行动&#34;属性设置正确。如果生成的方法/操作错误,浏览器可能会尝试发送“点击”按钮。到了错误的地方,甚至根本不会尝试发送它。

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

答案 1 :(得分:0)

您的代码正常运行。我把它放在一个测试项目中,然后重定向。如果你问为什么你没有看到警报,那是因为页面需要回发来注册脚本,但是你有机会重新定向到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);
    }
}