禁用<ASP:LinkBut​​ton>上的回发

我的窗体上有一个ASP.NET的链接控件。 我想在客户端使用它的JavaScript,并防止它回发到服务器。 (我想使用linkbutton控件,所以我可以皮肤,并在某些情况下禁用它,所以一个直标记是不是首选)。

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

ASPX代码:

<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> 

在这种情况下,onclickfunction会成为您的validation器。 如果为false,则不执行“href”链接; 然而,如果这是真的,href将被执行。 这消除了你的回帖。

这可能听起来像一个无益的答案…但是,为什么你使用LinkBut​​ton的纯粹客户端的东西? 使用标准的HTML定位标记并将其onclick动作设置为您的Javascript。

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

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

但是,除非你在LinkBut​​ton的Click事件中做服务器端活动,否则在这里使用它似乎没有多less意义。

你也可以做

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

并停止链接button回发

只要设置href =“#”

 <asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton> 

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

在C#中,你可以这样做:

 MyButton.Attributes.Add("onclick", "put your javascript here including... return false;"); 

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

你有没有尝试过使用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> 

刚刚通过这个几分钟之前,正确的做法是使用

  1. OnClientClick
  2. Return False()

如以下示例代码行所示:

 <asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/> 

刚刚从我的工作代码复制该行。

您可能还希望让客户端函数返回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);” 招。

为什么不使用空的ajax更新面板,并将linkbutton的click事件连接到它? 这种方式只有更新面板将得到更新,从而避免了回发,并允许您运行您的JavaScript

而不是实现的属性:

 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标签

似乎没有人这样做:

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

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

你可以做的其他事情,如果你想保持你的滚动位置是这样的:

 <asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" /> 

在jQuery的准备function,你可以做下面的事情 –

 var hrefcode = $('a[id*=linkbutton]').attr('href').split(':'); var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}"; $('a[id*=linkbutton]').attr('href', onclickcode); 

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