阻止ASP.NET中的页面刷新

时间:2013-07-11 20:41:57

标签: asp.net

我的aspx文件中有以下代码:

<button type="button" id="btnAskQuestion" runat="server" onserverclick="btnAskQuestion_Click">Ask Question</button>

我已经尝试了我能想到的onclick="return false;"onclick="preventDefault()"的每个组合,包括将它们放入被调用的javascript函数中。我尝试的所有内容都有两个结果之一:要么我得到回发,要么服务器端代码(btnAskQuestion_Click)永远不会执行。

知道我可能做错了吗?

4 个答案:

答案 0 :(得分:5)

您不能以这种方式执行服务器端代码,使用onserverclick会导致回发。

如果您希望阻止整页刷新并仍然执行服务器端代码,则必须通过onclick调用客户端JS函数并从那里执行AJAX调用。

另一种方法是使用您的按钮作为UpdatePanel的触发器 - 这样只会执行部分回发。

答案 1 :(得分:3)

尝试在按钮标记中使用属性UseSubmitBehavior="false"

或者您可以使用“技巧”:

标记

<button onclick="myFunction()">Click Me!</button>
<div style="display:none">
   <asp:Button runat="server" id="btnButton" .../>
</div>

JS

function myFunction()
{
  if (true statement)
    $("[id$=btnButton]").click();
  else
    alert("false");
}

这样做是因为你处理具有正常标记的东西并使用js来执行逻辑。您可以触发单击按钮,在服务器中执行某些操作。

答案 2 :(得分:2)

在服务器上触发 OnClick ,在客户端浏览器上触发 OnClientClick 。你应该这样做:

<asp:Button ID="btnAskQuestion" runat="server" 
            OnClick="btnAskQuestion_Click" 
            OnClientClick="return myfunction();">Ask Question</asp:button>

如果myFunction返回true,那么您将回发到服务器。

答案 3 :(得分:1)

我的回答仅适用于ASP:Button,而不适用于您正在使用的按钮控件。如果有选择,我会切换到ASP:Button

您正在寻找OnClientClick。如果你把JavaScript代码放在那里,它会杀掉PostBack,然后它才能进入服务器。

另一方面,如果你想在没有PostBack的情况下执行服务器代码,那是不可能的。 PostBack是触发服务器行动的原因。