【问题标题】:button click event not firing in asp.net按钮单击事件未在 asp.net 中触发
【发布时间】:2012-04-25 15:48:10
【问题描述】:

我是一个在工作实习的谦虚学生,我继承了一个“半成品”应用程序。它是用 C#(完全没有经验).NET(一点经验)编写的,使用 AJAX(没有经验)和 Jquery(一点经验)。我写了一个小方法来从网页中获取文本并将其解析为文本文档。我希望它在用户推送“发布”时触发。

按钮不会触发。我在我的“btnPublish_Click”处理程序中放置了一个断点,它甚至没有到达它。

我已经注册了按钮单击事件(我读到您需要在 C# 中执行此操作):

namespace MaintainTenderFiles.ajax
{
    public partial class publish : TendersPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                loadPendingTenders();
                preloadTender();
                btnPublish.Click += new EventHandler(this.btnPublish_Click);
            }
            else
            {
               //more code

然后对点击事件进行编码:

    public void btnPublish_Click(object sender, EventArgs e)
    {
        String script = "alert('Clicked!!!');";
        ScriptManager.RegisterStartupScript(this.Page, this.GetType(),
 "alertScript", script, true);
    }

当我点击该按钮时发生的所有事情就是将我带到一个名为“已发布”的页面。

为什么我不能触发事件?

编辑**

显然忘记在标记页面中包含按钮的代码:

 <asp:Button ID="btnPublish" OnClick="btnPublish_Click" 
  CssClass="ui-state-default ui-corner-all" runat="server" 
  Text="Publish" CausesValidation="False" UseSubmitBehavior="False" />

【问题讨论】:

  • 在后面的代码中编写 javascript 确实不是最佳实践。经典网络表单的工作方式让我感到恶心...... :(
  • 我只是想在单击按钮以最终工作时弹出警报....我不会在其中包含 jscript。经典的网络表单让你生病是什么意思?我应该做些什么不同的事情?我只是在学习,而且对未来的最佳实践非常感兴趣。
  • 网络表单的工作方式没有任何问题。一旦你理解了这个过程,它就完全有意义了。此外,当您像这样执行 ajax 时,在代码隐藏上注册 javscript 没有任何问题。
  • 1.您只想在btnPublish click 处执行一些客户端代码吗? 2.你的标记文件.aspx是否包含btnPublish按钮或者你在.aspx.cs后面的代码中动态生成它?
  • 单击按钮时,该方法从填充的表单中获取信息,然后将其写入 html 文件,然后将其推送到等待推送到我们外部服务器的文件夹中。我的标记文件中确实有一个名为 btnPublish 的按钮,是的。

标签: jquery asp.net .net ajax


【解决方案1】:

移动按钮事件寄存器,以便记录每次加载。

namespace MaintainTenderFiles.ajax
{
    public partial class publish : TendersPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            btnPublish.Click += new EventHandler(this.btnPublish_Click);
            if (Page.IsPostBack == false)
            {
                loadPendingTenders();
                preloadTender();

            }
            else
            {

【讨论】:

  • 我还是进不去点击事件...。我不仅没有弹出小警报框,而且没有碰到我插入的断点...虽然我将它放在 if 的第一部分中,因为 else 部分是重定向,所以我认为这并不重要。但是,正如我之前所说,最佳实践... +1 指出...
  • 您正在回发到同一页面?你的表单是runat server?而不是在代码隐藏中分配您的 onclick。尝试像这样在html中设置它
  • 你说当按钮被点击时它会转移到不同的页面。所以它从不做回发,而是在第二页发帖,这是你应该放代码的地方。表单标签是什么样子的?
  • 没错,除了当您发布到第二页时,服务器端点击事件不会发生在第一页上。当前页面永远不会被第二次处理,因为您改为移动到第二页。为了让点击事件发生,它必须回发给自己。无法在第二页绑定点击事件,因为该控件不存在。
  • 跨度文本在下一页中不可用。如果您想在第二页上使用它,只需在发布到下一页之前使用 javascript 将其复制到文本框或隐藏字段中。
猜你喜欢
  • 2010-10-21
  • 2011-12-02
  • 2014-01-14
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2013-01-17
相关资源
最近更新 更多