asp.net - ejemplos - Deshabilitar la devolución de datos en un<ASP: LinkButton>
asp linkbutton href (16)
Tengo un control de botón de enlace ASP.NET en mi formulario. Me gustaría utilizarlo para javascript en el lado del cliente y evitar que se publique nuevamente en el servidor. (Me gustaría usar el control del botón de enlace para poder despellejarlo y desactivarlo en algunos casos, por lo que no se prefiere una etiqueta hacia arriba).
¿Cómo evito que vuelva a publicar en el servidor?
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 representa 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 enlace "href" no se ejecuta; sin embargo, si es verdad, la href se ejecutará. Esto elimina tu publicación.
Creo que deberías investigar usando un control HyperLink. Es un control del lado del servidor (por lo que puede manipular la visibilidad y el código), pero omite una etiqueta de anclaje normal y no causa una devolución de datos.
Esto puede sonar como una respuesta inútil ... ¿Pero por qué estás usando un LinkButton para algo puramente del lado del cliente? Use una etiqueta ancla estándar HTML y establezca su acción onclick
en su Javascript.
Si necesita que el servidor genere el texto de ese enlace, utilice una asp:Label
como el contenido entre las etiquetas de inicio y fin del anclaje.
Si necesita cambiar dinámicamente el comportamiento del script basado en el código del lado del servidor, considere asp:Literal
como técnica.
Pero a menos que esté haciendo actividad en el lado del servidor desde el evento Click del LinkButton, simplemente no parece tener mucho sentido usarlo aquí.
También es posible que 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 podrías considerar:
<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>
Utilizo la clase clicable para configurar cosas como puntero, color, etc., de modo que su aspecto sea similar a una etiqueta de anclaje, pero no tengo que preocuparme de que se publique o tener que hacer el href = "javascript: void (0); " truco.
¿Por qué no usar un panel de actualización de Ajax vacío y cablear el evento de clic del botón de enlace a él? De esta forma, solo el panel de actualización se actualizará, evitando así una devolución de datos y permitiéndole ejecutar su javascript
llamar a la función de script java en el evento onclick.
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;");
}}
Utilizar:
OnClientClick="return false;"
dentro de asp: etiqueta LinkButton
utilice el enlace html en lugar del enlace asp y puede usar la etiqueta entre el enlace html para controlar el servidor
¿Has 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>
En C #, harías algo como esto:
MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
Nadie parece estar haciéndolo así:
createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == ''Please Wait'') { return false; } else { this.innerHTML=''Please Wait''; }");
Esta parece ser la única forma que funciona.
Puedes hacerlo también
...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText(''1'');return false"...
Y detiene el retorno del botón de enlace
Solo establece href = "#"
<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
Otra cosa que puede hacer si desea conservar su posición de desplazamiento es esta:
<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />
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);
Acabo de pasar por esto antes de unos minutos, la forma correcta de hacerlo es usar
-
OnClientClick
-
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.