事件按钮后面:AJAX, c#, asp.net

本文关键字:asp net AJAX 按钮 事件 | 更新日期: 2023-09-27 18:01:51

一行恢复:我使用AJAX请求构建一个带有按钮的表,然后获取该按钮并显示它。当我点击按钮时,问题出现在事件和回发之间。

我试着做一个按钮,并发送一个AJAX请求:这是AJAX部分:

  $.ajax({
            type: "POST",
            url: "WebForm1.aspx/createTable",
            data: JSON.stringify({ id: idArgument }),
            contentType: "application/json; charset=utf-8",
            success: function(msg) 
            {
                 if(msg.d != "")
                 {
                        $('#tableauArticles').empty();
                        $('<div class="newtable">').html(msg.d).appendTo('#tableauArticles');
                  }
             }
       });

tableauArticles是一个表,其中放置了文档名称和按钮。下面是"createTable":

 var page = (WebForm1)HttpContext.Current.CurrentHandler;
 System.Web.UI.WebControls.Table tableau = page.CreateTableNonStatique(id);
  var stringWriter = new StringWriter();
  using (var htmlWriter = new HtmlTextWriter(stringWriter))
  {
         tableau.RenderControl(htmlWriter);
  }
  string tableauString = stringWriter.ToString();
  return tableauString;

CreateTableNonStatique只是一个在c#代码中创建表的函数,它似乎可以工作,因为我看到了我想看到的。问题是按钮(在桌子上):当我点击它时,它会刷新页面。

我已经搜索过了,并且看到了很多阻止回发的东西:

boutonLire.OnClientClick = "return false;";

boutonLire.UseSubmitBehavior = false;

和它工作,但我有没有事件:它不会回发,但它什么也不做,即使是

boutonLire.Click += new EventHandler(testReturn);
boutonLire.Click += (sender, eventArgs) =>
{
    // function
}

最糟糕的是

boutonLire.OnClientClick = "test(); return false;";

让按钮刷新页面,就像

boutonLire.OnClientClick = "return testReturn();";
public bool testReturn()
{
    return false;
}

这是我的整个按钮附近,以及我做的测试:

           TableCell celluleBouton = new TableCell();
           Button boutonLire = new Button();
           boutonLire.Text = "Telecharger";
           boutonLire.ID = svgID.ToString();
           boutonLire.Attributes.Add("OnClick","testReturn(event);"); 
           /*boutonLire.OnClientClick = "return testReturn();";
           boutonLire.UseSubmitBehavior = false;
           boutonLire.Click += new EventHandler(testReturn);
           boutonLire.Click += (sender, eventArgs) =>
           {
                Guid fichierID = svgID;
                if (fichierID == null)
                    fichierID = Guid.Empty;
                buttonDownload_Click(fichierID);
            };*/
            celluleBouton.Controls.Add(boutonLire);
            tableColonne.Cells.Add(celluleBouton);
            tableau.Rows.Add(tableColonne);

和脚本,在尼尔的帮助下:

<script> 
    $(function testReturn(event) 
    {
        alert("beforePrevent"); 
        event.preventDefault();
        alert("afterPrevent");
    }) 
</script> 

会在每次刷新时显示"beforePrevent",而不会显示"afterPrevent"。

谢谢!

事件按钮后面:AJAX, c#, asp.net

单击此链接时,return false将取消浏览器的default behavior

这意味着所有其他浏览器行为将被取消。

那么该怎么办呢?

你可以使用event.preventDefault()而不是返回false!

试试吧!

看看这个:- http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

我的答案是:返回错误;是足够的,但event. preventdefault()也必须工作(我只是不知道如何传递事件作为一个参数,但是…

 TableCell celluleBouton = new TableCell();
 System.Web.UI.WebControls.Button boutonLire = new System.Web.UI.WebControls.Button();
  boutonLire.Text = "Telecharger";
  boutonLire.ID = svgID.ToString();
  boutonLire.Attributes.Add("onclick", "return clicArticle(this);");
  // on le crée graphiquement
  celluleBouton.Controls.Add(boutonLire);
  tableColonne.Cells.Add(celluleBouton);
  tableau.Rows.Add(tableColonne);

因此,当它被点击时:

 <script>
        function clicArticle(boutton)
        {
            var idArgument=boutton.id;
            $.ajax
            ({
                type: "POST",
                url: "WebForm1.aspx/telechargerStatique",
                data: JSON.stringify({ id: idArgument }),
                contentType: "application/json; charset=utf-8",
                success: function(msg) 
                {
                    alert(msg.d);
                    // here, display the file      
                    return false;
                }
            })
            return false;
        }
    </script>

我希望它能帮助别人!谢谢!