2010-05-18 18 views
23

cómo llamar a la función javascript en html.actionlink en asp.net mvc?cómo llamar a la función javascript en html.actionlink en asp.net mvc?

i wan para llamar a un método que está en java script pero la forma de llamarlo dentro Html.ActionLink en misma página gracias de antemano

+0

Para mí, no está claro lo que estás tratando de lograr. Html.ActionLink se ejecuta en el servidor, su javascript se ejecuta en el cliente; no hay forma de que uno pueda llamar al otro. ¿Quiere decir que quiere que se ejecute alguna parte de javascript cuando se hace clic en el enlace creado por Html.ActionLink? – Thomas

+0

sí, quiero llamar a un método cuando se hace clic en el enlace particular – Renu123

Respuesta

51

es necesario utilizar los htmlAttributes objeto anónimo, como esto:

<%= Html.ActionLink("linky", "action", "controller", new { onclick = "someFunction();"}) %> 

también podría darle un id de un adjuntar a la misma con jQuery/lo que sea, como esto:

<%= Html.ActionLink("linky", "action", "controller", new { id = "myLink" }) %> 


$('#myLink').click(function() { /* bla */ }); 
+0

¿el primero, actionlink aún llamará al controlador? en caso afirmativo, ¿cómo lo desactivaría? – Djeroen

+1

@Djeroen, está bien, soy un idiota, ¿por qué necesitaría incluso un actionlink si no quiero que llame a un controlador? – Djeroen

+0

¿Podemos lograr lo mismo con Ajax.ActionLink? – GreyCloud

20

para las llamadas a un Javascript en su cción de enlace que sólo tendrá que escribir ActionLink así:

@Html.ActionLink("Delete", "Your-Action", new { id = item.id }, 
       new { onclick="return confirm('Are you sure?');"}) 

No se confunda entre los valores de la ruta y los atributos HTML.

+1

Respuesta perfecta .. –

4
@Html.ActionLink("Edit","ActionName",new{id=item.id},new{onclick="functionname();"}) 
6
<a onclick="MyFunc()">blabla..</a> 

no hay nada más en @ Html.ActionLink que se puede utilizar en este caso. Y la navaja de afeitar es evel por sí sola, cállala desde donde puedas.

+0

para mí, esta es la mejor respuesta! – Ashi

+1

De acuerdo. Basado en solo querer ejecutar una función de Javascript, esta es la respuesta más correcta. Use un ActionLink cuando desee llamar al Controlador, use lo anterior para llamar simplemente a una Función de JavaScript. – AxleWack

1

Este es el único que trabajó para mí en el archivo .cshtml:

@Html.ActionLink(
    "Name", 
    "Action", 
    "Controller", 
    routeValues: null, 
    htmlAttributes:new Dictionary<string, object> {{ "onclick", "alert('Test');" }}) 

espero que esto ayude.

0

Esto es un poco de una entrada antigua, pero en realidad hay una manera de hacer que un operador onclick que llama a una función en lugar de ir a ninguna parte en ASP.NET

helper.ActionLink("Choose", null, null, null, 
    new {@onclick = "Locations.Choose(" + location.Id + ")", @href="#"}) 

Si especifica comillas vacías o la como en el controlador/acción, es probable que agregue un enlace a lo que enumeró. Puedes hacer eso, y hacer un return false en el onclick. Puede leer más sobre esto en:

What's the effect of adding 'return false' to a click event listener?

Si usted está haciendo esto onclick en un fichero cshtml, que sería un poco más limpio que acaba de especificar el enlace a sí mismo (a href ...) en lugar de tener el ActionLink manejarlo. Si está haciendo un HtmlHelper, como viene de mi ejemplo anterior, entonces diría que llamar a ActionLink es una buena solución, o potencialmente mejor, usar tagbuilder en su lugar.

Cuestiones relacionadas