事件按钮后面: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"。
谢谢!
单击此链接时,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>
我希望它能帮助别人!谢谢!