按钮 onClick 事件没有任何反应
Button onClick event nothing is happening
我有一个问题,我的按钮点击不起作用。我认为所有代码都是正确的,但为什么点击它时没有任何反应?显示消息的代码是否正确,重定向到 website/webpage 的代码是否正确?非常感谢任何帮助!
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 中访问站点,单击站点上的按钮,然后查看 "Output" window。如果您在点击后看到任何 "First Chance Exception" 行出现,请尝试追逐并解决它们,或者将它们写下来并显示给我们。确保仅在您单击按钮后才真正记录这些内容。站点启动时可能会记录一些异常。启动站点后,请确保在单击按钮之前输出 window 停止抖动。
接下来,您创建的任何其他按钮是否完全按预期工作?在本页?在其他页面上怎么样?您是否尝试过放置一个断点来查看此代码是否完全 运行s?在 btnOne_Click 方法的第一行放置一个断点(单击那里并按 F9,假设您有典型的热键),并尝试在其他方法中放置一些其他断点,例如 Page 的构造函数。然后尝试 运行 在 "debug" 模式下设置您的站点并单击按钮。检查触发了哪些断点。
如果根本没有遇到断点,那么要么你的 VisualStudio 和网络服务器没有配置调试(糟糕),要么页面可能根本没有被编译(例如,你可能 运行宁其旧副本)。
如果触发了一些断点但没有触发一个按钮处理程序,请尝试观察您的页面在您单击该按钮时执行或尝试执行的操作。如果您使用任何现代浏览器,它应该在某处有一个 "developer tools" 面板。例如,在 Chrome 中,按 F12。在那些开发工具中,找到一些选项卡或 window 将向您显示 "Network operations"。显示或刷新您的页面,检查是否捕获了某些网络操作。您至少应该注意到正在下载的页面本身带有“200”状态代码。观察之后,当一切都变得安静时,"Clear" 日志(某处应该有一个按钮)这样你就可以再次获得清新干净的视图,然后按下按钮。观察会发生什么。
如果按钮在客户端有效,您将看到一个请求被发送到服务器。观察响应代码。是200吗? 404? 500?所有这些都意味着不同的事情。报告代码。此外,如果有任何错误(状态代码 != 200),请尝试 read/copy 您可以提供的所有详细信息。
如果按钮和服务器工作正常或几乎正常,那么在单击按钮后您会看到一个请求发送回同一页面,然后是状态 = 200。但是,如果 IIS 和 ASPX 正常,这将 运行 xxx_Click 处理程序。所以你可能不会看到这种情况。
如果按钮根本不起作用并且没有发送任何请求,则呈现的 HTML 代码存在一些问题。返回浏览器中的开发工具,找到一个 tab/window 允许您查看站点的原始 HTML 代码,然后找到那个按钮。检查其上设置了哪些点击操作。如果您没有看到,请检查哪个 FORM 标记是该按钮的父标记,并检查其 "method" 和 "action" 属性是否设置正确。如果 method/action 生成错误,浏览器可能会尝试将 'click' 发送到错误的位置,甚至可能根本不会尝试发送。
如果所有这些都没有显示出任何有用的信息,那么请尝试...暂时用在任何情况下都应该有效的代码替换您的代码。查看 MSDN site 中的示例。在某处备份您的页面代码,并将其替换为本网站的示例。将所有这些粘贴为 ASPX 文件,并从后面的代码(ASPX.CS 文件)和 运行 您的站点中删除所有内容。此示例显示一个简单的按钮并将一个处理程序附加到该按钮。检查它是否有效。这应该。您也可以再次观察我上面写的所有内容。如果该示例不起作用,那么我再次猜测您的 IIS 或 ASP 安装已损坏。
您的代码工作正常。我把它放在一个测试项目中并重定向。如果您问为什么看不到警报,那是因为该页面需要 post 返回以注册脚本,但是您在它有机会这样做之前重定向到 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);
}
}
我有一个问题,我的按钮点击不起作用。我认为所有代码都是正确的,但为什么点击它时没有任何反应?显示消息的代码是否正确,重定向到 website/webpage 的代码是否正确?非常感谢任何帮助!
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 中访问站点,单击站点上的按钮,然后查看 "Output" window。如果您在点击后看到任何 "First Chance Exception" 行出现,请尝试追逐并解决它们,或者将它们写下来并显示给我们。确保仅在您单击按钮后才真正记录这些内容。站点启动时可能会记录一些异常。启动站点后,请确保在单击按钮之前输出 window 停止抖动。
接下来,您创建的任何其他按钮是否完全按预期工作?在本页?在其他页面上怎么样?您是否尝试过放置一个断点来查看此代码是否完全 运行s?在 btnOne_Click 方法的第一行放置一个断点(单击那里并按 F9,假设您有典型的热键),并尝试在其他方法中放置一些其他断点,例如 Page 的构造函数。然后尝试 运行 在 "debug" 模式下设置您的站点并单击按钮。检查触发了哪些断点。
如果根本没有遇到断点,那么要么你的 VisualStudio 和网络服务器没有配置调试(糟糕),要么页面可能根本没有被编译(例如,你可能 运行宁其旧副本)。
如果触发了一些断点但没有触发一个按钮处理程序,请尝试观察您的页面在您单击该按钮时执行或尝试执行的操作。如果您使用任何现代浏览器,它应该在某处有一个 "developer tools" 面板。例如,在 Chrome 中,按 F12。在那些开发工具中,找到一些选项卡或 window 将向您显示 "Network operations"。显示或刷新您的页面,检查是否捕获了某些网络操作。您至少应该注意到正在下载的页面本身带有“200”状态代码。观察之后,当一切都变得安静时,"Clear" 日志(某处应该有一个按钮)这样你就可以再次获得清新干净的视图,然后按下按钮。观察会发生什么。
如果按钮在客户端有效,您将看到一个请求被发送到服务器。观察响应代码。是200吗? 404? 500?所有这些都意味着不同的事情。报告代码。此外,如果有任何错误(状态代码 != 200),请尝试 read/copy 您可以提供的所有详细信息。
如果按钮和服务器工作正常或几乎正常,那么在单击按钮后您会看到一个请求发送回同一页面,然后是状态 = 200。但是,如果 IIS 和 ASPX 正常,这将 运行 xxx_Click 处理程序。所以你可能不会看到这种情况。
如果按钮根本不起作用并且没有发送任何请求,则呈现的 HTML 代码存在一些问题。返回浏览器中的开发工具,找到一个 tab/window 允许您查看站点的原始 HTML 代码,然后找到那个按钮。检查其上设置了哪些点击操作。如果您没有看到,请检查哪个 FORM 标记是该按钮的父标记,并检查其 "method" 和 "action" 属性是否设置正确。如果 method/action 生成错误,浏览器可能会尝试将 'click' 发送到错误的位置,甚至可能根本不会尝试发送。
如果所有这些都没有显示出任何有用的信息,那么请尝试...暂时用在任何情况下都应该有效的代码替换您的代码。查看 MSDN site 中的示例。在某处备份您的页面代码,并将其替换为本网站的示例。将所有这些粘贴为 ASPX 文件,并从后面的代码(ASPX.CS 文件)和 运行 您的站点中删除所有内容。此示例显示一个简单的按钮并将一个处理程序附加到该按钮。检查它是否有效。这应该。您也可以再次观察我上面写的所有内容。如果该示例不起作用,那么我再次猜测您的 IIS 或 ASP 安装已损坏。
您的代码工作正常。我把它放在一个测试项目中并重定向。如果您问为什么看不到警报,那是因为该页面需要 post 返回以注册脚本,但是您在它有机会这样做之前重定向到 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);
}
}