2012-05-25 29 views

Respuesta

22

Sachin,

Si estás usando jQuery (que usted no menciona, pero voy a mostrar, ya que es bastante estándar con MVC), que haría lo siguiente:

$('#buttonId').click(function(){ 
    document.location = '@Url.Action("MyAction","MyController")'; 
}); 

por supuesto, es probable que desee utilizar ajax, pero este es un ejemplo básico.

4

Además de la respuesta de Darin sobre el uso de un método GET de formulario, también puede llamar a funciones de JavaScript que a su vez invocarán una acción.

Puede interceptar el evento de clic de botón al hacer clic y ejecutar su propio código. Ese código puede llamar a una acción de forma asíncrona con Ajax o simplemente navegar a un método de acción

Aquí es ejemplo JavaScript que intercepta el evento de clic de botón

$(document).ready(function() { 

    myButton.onclick = function (event) { 
     // in here you can call an ajax method or just navigate to an action 
     return false; 
    } 

    // or using jQuery 
    $('#myButton').click(function (e) { 
     // do whatever here 
     e.preventDefault; 
    }); 
}); 

O puede interceptar un botón que tiene un atributo href

$(function() { 
    $("#myButton").click(function() { 
     var href = $(this).attr("href"); 
     var route = href + "?paramName=" + $('#SomeValue').val(); 
     $(this).attr("href", route); 
    }); 
}); 

Esto añade información de parámetros que puede haber almacenado en otra entrada en la página y lo añade a la URL y luego se desplaza a la acción

+0

Por qué usar javascript cuando HTML ya tiene todo lo necesario? Escribir el marcado semántico siempre es mejor que javascript. –

+0

Sí, pero el OP estaba preguntando sobre hacer clic en un botón para llamar a una acción, esa acción podría no ser necesariamente una publicación de un formulario, podría ser solo para navegación o una simple solicitud de ajax. –

+0

¿Quién dijo que un formulario solo puede hacer POST? Podrías perfectamente usar el verbo GET. –

4

¿Cómo lo haces? De la misma manera que si no usa MVC.

<INPUT TYPE="BUTTON" VALUE="Home Page" ONCLICK="window.location.href='/Controller/Action'"> 
+0

Es mejor no tener JavaScript en línea. Vea la respuesta de Jim o CD Smith. – knownasilya

14

Se podría utilizar un html <form>:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Get)) 
{ 
    <input type="submit" value="Click me" /> 
} 
+0

gracias, funcionó para mí – animaonline

+0

Esto funcionó para mí: Vardhini

Cuestiones relacionadas