我已经在按钮onclientClick事件上显式地添加了__doPostBack()。
<asp:Button ID="Button1" runat="server" Text="Button"
OnClientClick="__doPostBack('Button1','')"/> 当我单击该按钮时,Page_Load调用了两次。但是如果我在页面加载中添加下面的代码,页面加载只会在点击按钮时调用一次。
Button1.Attributes.Add("onClientClick", "__doPostBack('Button1','')");同样,如果我使用return false进行添加,它只会在单击时调用一次页面加载
<asp:Button ID="Button1" runat="server" Text="Button"
OnClientClick="__doPostBack('Button1','');return false;"/>返回true再次给我两次页面加载,但是在attribute.add代码中添加return true或false会得到相同的结果,只有一次页面加载调用。
Button1.Attributes.Add("onClientClick", "__doPostBack('Button1','');return true;");当我试图以不同的方式添加__doPostBack时,我不能确切地理解到底发生了什么。请帮帮忙。谢谢
发布于 2010-09-20 15:39:55
通过放置OnClientClick,然后asp.net使用您的代码和doPostBack在客户端大小上呈现onlick函数。
所以它被调用了2次,因为其中一次是由self调用的,另一次是因为你添加了。
发布于 2010-09-20 05:29:45
一个Button已经做了一个PostBack,为什么你需要从客户端调用它呢?
不管怎样,我想你的例子中的page_load被调用了两次,因为一次是由OnClientClick调用的,第二次是服务器端调用的。
发布于 2011-12-08 10:20:00
如果返回false,则取消onClick事件(即未真正单击按钮,因此仅触发_doPostBack )。这就是JavaScript行为。
OnClientClick属性在HTML代码中呈现为"onClick“(当该属性位于ASP.NET按钮上时)。你的口供。
Button1.Attributes.Add("onClientClick", "__doPostBack('Button1','');return true;");...is不是有效的超文本标记语言,因为它呈现的"onClientClick“不是JavaScript事件(即_doPostBack从不触发,但通常的回发会触发)。Attributes属性用于向按钮的最终呈现添加直接的HTML属性(不从.NET重写)。
我的建议是:不要调用_doPostBack,除非您还没有找到任何其他触发回发的替代方法。在您提供的示例中,OnClientClick属性是完全多余的。
我希望我说得够清楚了(我的英语不是很好)。
https://stackoverflow.com/questions/3746270
复制相似问题