Disable the postback on an <ASP:LinkButton>

asp.netAsplinkbutton

asp.net Problem Overview


I have an ASP.NET linkbutton control on my form. I would like to use it for javascript on the client side and prevent it from posting back to the server. (I'd like to use the linkbutton control so I can skin it and disable it in some cases, so a straight up tag is not preferred).

How do I prevent it from posting back to the server?

asp.net Solutions


Solution 1 - asp.net

ASPX code:

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

Code behind:

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

What renders as HTML is:

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

In this case, what happens is the onclick functionality becomes your validator. If it is false, the "href" link is not executed; however, if it is true the href will get executed. This eliminates your post back.

Solution 2 - asp.net

This may sound like an unhelpful answer ... But why are you using a LinkButton for something purely client-side? Use a standard HTML anchor tag and set its onclick action to your Javascript.

If you need the server to generate the text of that link, then use an asp:Label as the content between the anchor's start and end tags.

If you need to dynamically change the script behavior based on server-side code, consider asp:Literal as a technique.

But unless you're doing server-side activity from the Click event of the LinkButton, there just doesn't seem to be much point to using it here.

Solution 3 - asp.net

You can do it too

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

And it stop the link button postback

Solution 4 - asp.net

Just set href="#"

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

Solution 5 - asp.net

I think you should investigate using a HyperLink control. It's a server-side control (so you can manipulate visibility and such from code), but it omits a regular ol' anchor tag and doesn't cause a postback.

Solution 6 - asp.net

Just been through this, the correct way to do it is to use:

  1. OnClientClick
  2. return false

as in the following example line of code:

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

Solution 7 - asp.net

In C#, you'd do something like this:

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

Solution 8 - asp.net

Instead of implement the attribute:

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

Use:

OnClientClick="return false;"

inside of asp:LinkButton tag

Solution 9 - asp.net

To avoid refresh of page, if the return false is not working with asp:LinkButton use

href="javascript: void;"

or

href="#"

along with OnClientClick="return false;"

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

Above is code will call the browser print without refresh the page.

Solution 10 - asp.net

call java script function on onclick event.

Solution 11 - asp.net

Have you tried to use the 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>

Solution 12 - asp.net

Something else you can do, if you want to preserve your scroll position is this:

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

Solution 13 - asp.net

No one seems to be doing it like this:

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

This seems to be the only way that works.

Solution 14 - asp.net

Why not use an empty ajax update panel and wire the linkbutton's click event to it? This way only the update panel will get updated, thus avoiding a postback and allowing you to run your javascript

Solution 15 - asp.net

In the jquery ready function you can do something like below -

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

Solution 16 - asp.net

You might also want to have the client-side function return false.

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

You might also consider:

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

I use the clickable class to set things like pointer, color, etc. so that its appearance is similar to an anchor tag, but I don't have to worry about it getting posted back or having to do the href="javascript:void(0);" trick.

Solution 17 - asp.net

use html link instead of asp link and you can use label in between html link for server side control

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiony0mboView Question on Stackoverflow
Solution 1 - asp.netRussell MyersView Answer on Stackoverflow
Solution 2 - asp.netJohn RudyView Answer on Stackoverflow
Solution 3 - asp.netDenisView Answer on Stackoverflow
Solution 4 - asp.netRandall SuttonView Answer on Stackoverflow
Solution 5 - asp.netJohn SheehanView Answer on Stackoverflow
Solution 6 - asp.netAdamView Answer on Stackoverflow
Solution 7 - asp.netBoltBaitView Answer on Stackoverflow
Solution 8 - asp.netJaiderView Answer on Stackoverflow
Solution 9 - asp.netDeepu ReghunathView Answer on Stackoverflow
Solution 10 - asp.netRizwan MajeedView Answer on Stackoverflow
Solution 11 - asp.netStefan HakanssonView Answer on Stackoverflow
Solution 12 - asp.netAndrew GrayView Answer on Stackoverflow
Solution 13 - asp.netPeterView Answer on Stackoverflow
Solution 14 - asp.netMisterMarcView Answer on Stackoverflow
Solution 15 - asp.netSenthilkumar baliahView Answer on Stackoverflow
Solution 16 - asp.nettvanfossonView Answer on Stackoverflow
Solution 17 - asp.netahmetView Answer on Stackoverflow