63

我的表单上有一个 ASP.NET 链接按钮控件。我想将它用于客户端的 javascript 并防止它回发到服务器。(我想使用 linkbutton 控件,以便在某些情况下对它进行蒙皮并禁用它,因此不建议使用直接向上的标签)。

如何防止它回发到服务器?

4

17 回答 17

68

ASP 代码:

<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>

后面的代码:

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        someID.Attributes.Add("onClick", "return false;");
    }
}

呈现为 HTML 的内容是:

<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>

在这种情况下,onclick 功能会成为您的验证器。如果为false,则不执行“href”链接;但是,如果它是真的 href 将被执行。这消除了您的回帖。

于 2008-10-07T01:21:17.303 回答
40

这听起来可能是一个无益的答案......但是为什么您将 LinkBut​​ton 用于纯粹的客户端?使用标准的 HTML 锚标记并将其onclick操作设置为您的 Javascript。

如果您需要服务器生成该链接的文本,则使用 anasp:Label作为锚点的开始和结束标记之间的内容。

如果您需要根据服务器端代码动态更改脚本行为,请考虑asp:Literal作为一种技术。

但是,除非您从 LinkBut​​ton 的 Click 事件执行服务器端活动,否则在这里使用它似乎没有多大意义。

于 2008-10-07T02:05:08.993 回答
26

你也可以

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

它停止链接按钮回发

于 2011-02-01T20:06:19.350 回答
15

只需设置 href="#"

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
于 2012-05-11T23:07:54.113 回答
6

我认为您应该使用 HyperLink 控件进行调查。它是一个服务器端控件(因此您可以从代码中操纵可见性等),但它省略了常规的 ol' 锚标记并且不会导致回发。

于 2008-10-07T02:08:41.687 回答
6

刚刚经历过这个,正确的方法是使用:

  1. OnClientClick
  2. return false

如以下示例代码行所示:

<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false;" />
于 2012-09-28T15:18:21.840 回答
4

在 C# 中,你会做这样的事情:

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
于 2008-10-07T00:43:32.060 回答
2

而不是实现属性:

public partial class _Default : System.Web.UI.Page{
 protected void Page_Load(object sender, EventArgs e)
 {
    someID.Attributes.Add("onClick", "return false;");
 }}

采用:

OnClientClick="return false;"

在 asp:LinkBut​​ton 标记内

于 2010-10-19T16:04:14.790 回答
2

为避免刷新页面,如果return falseasp:LinkButton使用

href="javascript: void;"

或者

href="#"

随着OnClientClick="return false;"

<asp:LinkButton ID="linkPrint" runat="server" CausesValidation="False" href="javascript: void;"
        OnClientClick="javascript:self.print();return false;">Print</asp:LinkButton>

以上代码将调用浏览器打印而不刷新页面。

于 2018-10-16T07:16:06.227 回答
1

在 onclick 事件上调用 java 脚本函数。

于 2010-09-28T12:16:00.000 回答
1

你试过用OnClientClick吗?

var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" };

<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton>
于 2011-05-19T16:01:13.557 回答
1

如果您想保留滚动位置,您可以做的其他事情是:

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />
于 2013-11-08T16:25:40.823 回答
0

似乎没有人这样做:

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else {  this.innerHTML='Please Wait'; }");

这似乎是唯一可行的方法。

于 2010-02-11T13:49:57.547 回答
0

为什么不使用一个空的 ajax 更新面板并将链接按钮的点击事件连接到它呢?这样,只有更新面板会得到更新,从而避免回发并允许您运行 javascript

于 2010-05-08T18:26:46.333 回答
0

在 jquery 就绪函数中,您可以执行以下操作 -

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);
于 2014-01-29T19:57:14.497 回答
-1

您可能还希望客户端函数返回 false。

<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" />

您还可以考虑:

<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>

我使用可点击类来设置指针、颜色等内容,使其外观类似于锚标记,但我不必担心它会被回发或必须执行 href="javascript:void (0);" 诡计。

于 2008-10-07T00:51:06.833 回答
-1

使用 html 链接而不是 asp 链接,您可以在 html 链接之间使用标签进行服务器端控制

于 2010-12-22T07:25:14.167 回答