Pregunta

Tengo un control de botón de enlace ASP.NET en mi formulario. Me gustaría usarlo para javascript en el lado del cliente y evitar que vuelva a publicarse en el servidor. (Me gustaría usar el control de botón de enlace para poder ocultarlo y deshabilitarlo en algunos casos, por lo que no se prefiere una etiqueta recta).

¿Cómo evito que vuelva a publicarse en el servidor?

¿Fue útil?

Solución

código ASPX:

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

Código detrás:

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

Lo que se reproduce como HTML es:

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

En este caso, lo que sucede es que la funcionalidad onclick se convierte en su validador. Si es falso, el " href " el enlace no se ejecuta; sin embargo, si es verdad el href será ejecutado. Esto elimina tu publicación de vuelta.

Otros consejos

Esto puede sonar como una respuesta inútil ... ¿Pero por qué estás usando un LinkButton para algo del lado del cliente? Use una etiqueta de anclaje HTML estándar y establezca su acción onclick en su Javascript.

Si necesita que el servidor genere el texto de ese enlace, use un asp: Label como el contenido entre las etiquetas de inicio y final del ancla.

Si necesita cambiar dinámicamente el comportamiento del script basado en el código del lado del servidor, considere asp: Literal como una técnica.

Pero a menos que esté realizando una actividad del lado del servidor del evento Click del botón LinkBut, no parece que tenga mucho sentido utilizarlo aquí.

También puedes hacerlo

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

Y detiene la devolución de botón de enlace

Solo configura href = " # "

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

Creo que deberías investigar usando un control HyperLink. Es un control del lado del servidor (para que pueda manipular la visibilidad y eso desde el código), pero omite una etiqueta de ancla normal y no provoca una devolución de datos.

En C #, harías algo como esto:

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

Solo he pasado por esto antes de unos minutos, la forma correcta de hacerlo es usar

  1. OnClientClick
  2. Return False ()

como la siguiente línea de código de ejemplo:

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

Solo copié esa línea de mi código de trabajo.

En lugar de implementar el atributo:

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

Uso:

OnClientClick="return false;"

dentro de asp: etiqueta LinkButton

llamar a la función javascript en el evento onclick.

¿Ha intentado utilizar 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>

Algo más que puedes hacer, si quieres conservar tu posición de desplazamiento es esto:

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

Es posible que también desee que la función del lado del cliente devuelva falso.

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

También puedes considerar:

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

Utilizo la clase en la que se puede hacer clic para establecer elementos como puntero, color, etc., de modo que su apariencia sea similar a una etiqueta de ancla, pero no tengo que preocuparme por que se vuelva a publicar o por tener que hacer el href = " ; javascript: void (0); " truco.

¿Por qué no usar un panel de actualización de ajax vacío y conectar el evento click del botón de enlace? De esta manera solo se actualizará el panel de actualización, evitando así una devolución de datos y permitiéndole ejecutar su javascript

Nadie parece estar haciendo esto así:

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

Esta parece ser la única forma en que funciona.

En la función jquery ready puedes hacer algo como a continuación -

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

Para evitar la actualización de la página, si return false no funciona con asp: LinkButton use

href="javascript: void;"

o

href="#"

junto con OnClientClick = " return false; "

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

El código anterior llamará al navegador para imprimir sin actualizar la página.

use el enlace html en lugar del enlace asp y puede usar la etiqueta entre el enlace html para el lado del servidor control

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top