Domanda

Ho un controllo linkbutton ASP.NET sul mio modulo. Vorrei usarlo per JavaScript sul lato client e impedirgli di postare sul server. (Mi piacerebbe usare il controllo linkbutton in modo da poterlo skin e disabilitarlo in alcuni casi, quindi non è preferibile un tag straight up).

Come posso impedirgli di postare sul server?

È stato utile?

Soluzione

Codice ASPX:

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

Codice dietro:

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

Ciò che viene visualizzato come HTML è:

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

In questo caso, ciò che accade è la funzionalità onclick diventa il tuo validatore. Se è falso, il " href " il collegamento non viene eseguito; tuttavia, se è vero, l'href verrà eseguito. Questo elimina il tuo post.

Altri suggerimenti

Potrebbe sembrare una risposta inutile ... Ma perché stai usando un LinkButton per qualcosa di puramente lato client? Usa un tag di ancoraggio HTML standard e imposta la sua azione onclick sul tuo Javascript.

Se hai bisogno che il server generi il testo di quel link, usa un asp: Label come contenuto tra i tag di inizio e fine dell'ancora.

Se devi modificare dinamicamente il comportamento dello script in base al codice lato server, considera asp: Literal come una tecnica.

Ma a meno che tu non stia svolgendo attività sul lato server dall'evento Click del LinkButton, non sembra proprio che abbia molto senso usarlo qui.

Puoi farlo anche tu

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

E interrompe il postback del pulsante di collegamento

Basta impostare href = " # "

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

Penso che dovresti indagare usando un controllo HyperLink. È un controllo lato server (quindi puoi manipolare la visibilità e simili dal codice), ma omette un normale tag di ancoraggio precedente e non provoca un postback.

In C #, faresti qualcosa del genere:

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

Appena passato questo prima di pochi minuti, il modo corretto per farlo è usare

  1. OnClientClick
  2. Return False ()

come la seguente riga di codice di esempio:

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

Ho appena copiato quella riga dal mio codice di lavoro.

Invece di implementare l'attributo:

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

Usa:

OnClientClick="return false;"

inside of asp: tag LinkButton

chiama la funzione javascript sull'evento onclick.

Hai provato a usare 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>

Qualcos'altro che puoi fare, se vuoi preservare la tua posizione di scorrimento è questo:

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

Potresti anche voler rendere false la funzione sul lato client.

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

Potresti anche considerare:

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

Uso la classe cliccabile per impostare cose come puntatore, colore, ecc. in modo che il suo aspetto sia simile a un tag di ancoraggio, ma non devo preoccuparmi che venga postato di nuovo o che debba fare il href = " ; javascript: void (0); " trucco.

Perché non utilizzare un pannello di aggiornamento Ajax vuoto e collegare ad esso l'evento click del pulsante di collegamento? In questo modo verrà aggiornato solo il pannello di aggiornamento, evitando così un postback e consentendo di eseguire il tuo javascript

Nessuno sembra farlo in questo modo:

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

Questo sembra essere l'unico modo che funziona.

Nella funzione jquery ready puoi fare qualcosa come sotto -

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

Per evitare l'aggiornamento della pagina, se return false non funziona con asp: LinkButton usa

href="javascript: void;"

o

href="#"

insieme a OnClientClick = " return false; "

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

Sopra è il codice chiamerà la stampa del browser senza aggiornare la pagina.

usa il collegamento html invece del collegamento asp e puoi usare l'etichetta tra il collegamento html per il lato server Controllo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top