阻止ASP.NET按钮重新加载页面

3

在我的.NET应用程序中,我插入了一个按钮,调用一个JavaScript函数(OnClientClick事件)和一个VB.NET函数(OnClick事件)

<asp:Button OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />

问题在于当我点击按钮时,它会刷新页面并删除文本框中的内容。
我尝试在OnClienClick事件上插入return false;,但它不执行OnClick事件。
如何避免页面重新加载?
附言:在Javascript函数的末尾打开一个新窗口window.open(newWindow.aspx),但我希望第一个页面保留用户在文本框中输入的值。
提前感谢 :)

文本框不应该失去其值,除非您手动清除它或者您没有使用ViewState。 - Ian
@lan 1- 因为我从未使用过AJAX,你能向我解释一下如何使用它来解决我的问题吗?2- 我使用HTML文本框,但是在页面刷新时内容会被删除。如果我使用ASP文本框则不会发生这种情况,但我必须使用HTML文本框(我还没有决定 :( )提前致谢... - user2217039
4个回答

6
您需要在两个点使用返回语句。
OnClientClick="return jsfunction();"

function jsfunction()
{
  //
  return false;
}

或者,您可以在函数调用后像这样返回 false。
OnClientClick="jsfunction(); return false;"

注意如果您想有条件地执行postback,则需要返回true或false。

OnClientClick="return jsfunction();"

function jsfunction()
{
  if(conditionForPostBack)
      return true;
  else
      return false;
}

1
我尝试在OnClienClick事件中插入return false;,但它不会执行OnClick事件。 - Ian
我已经解释过了。楼主已经使用过这个方法,并且它起作用了,但由于"return false"阻止了postback,这并不是他们想要的。我非常确定他们正在寻找AJAX。 - Ian

2

或者您可以禁用提交行为。默认情况下,asp.net将按钮呈现为提交按钮。如果您禁用提交行为,则它将呈现为按钮类型。

<asp:Button UseSubmitBehavior="false" OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />

但是使用这段代码时,它不会触发服务器端的“OnClick”事件。


但是似乎他们想要执行OnClick,只是没有页面重新加载。 - Ian
是的,看起来是这样,但他们之前没有提到过。 :) - Ujjwal Manandhar
如果Adil想要有条件的回传,他的答案将解决这个问题。 - Ujjwal Manandhar
是的,我想执行vb.net函数... 我已经尝试在OnClientClick事件中插入"return false;",但它不会执行OnClick事件。 :) - user2217039

0
如果您不打算使用C# Codebehind函数触发按钮,则不需要使用asp:Button。因此,您可以使用常规的HTML。
<button id='btn_1' onclick='ajax_function()'>Button</button>

HTML按钮更加简单和快速。如果您使用asp:button,则应使用clientid()函数来捕获控件以触发ajax。


0

我正在寻找与您相同的东西,我找到了一个补丁:

如果您在服务器端调用方法,则可以使用带有更新面板的 AJAX,但这对我没有起作用。但是您可以将所需内容保存在 Session 中,因此只要会话持续,您就可以使用它。

// Save at SessionParameter the elementToSave we want.
this.Session["SessionParameter"] = elementToSave;

// Retrieve the info from the Session
ElementYouNeededToSave = (TypeOfTheElement)Session["SessionParameter"];

希望这对处于我这种情况的人有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接