2012-05-25 22 views

risposta

22

Sachin,

Se stai usando jQuery (che non accennate, ma ti faccio vedere come è abbastanza standard con MVC), devi effettuare le seguenti operazioni:

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

ovviamente, probabilmente vorrai usare ajax, ma questo è un esempio di base.

4

Così come la risposta di Darin sull'utilizzo di un metodo GET del modulo, è anche possibile chiamare le funzioni javascript che a loro volta chiameranno un'azione.

È possibile intercettare l'evento clic sul pulsante quando si fa clic e si esegue il proprio codice. Questo codice può chiamare un'azione in modo asincrono utilizzando Ajax o semplicemente passare a un metodo di azione

Ecco javascript campione che intercetta l'evento pulsante di scatto

$(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; 
    }); 
}); 

Oppure si può intercettare un pulsante che ha un attributo href

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

Questo aggiunge le informazioni sui parametri che si possono avere memorizzato in un altro ingresso sulla pagina e lo aggiunge l'URL e poi naviga all'azione

+0

Perché usare JavaScript quando HTML ha già tutto ciò che è necessario? Scrivere il markup semantico è sempre meglio di javascript. –

+0

Sì, ma l'OP chiedeva di fare clic su un pulsante per chiamare un'azione, quell'azione potrebbe non essere necessariamente un Post di un modulo, potrebbe essere solo per la navigazione o una semplice richiesta Ajax .. –

+0

Chi ha detto che un modulo può solo fare il post? Potresti perfettamente usare il verbo GET. –

4

Come si fa? Nello stesso modo in cui si farebbe se non si utilizzasse MVC.

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

Meglio non avere JavaScript in linea. Vedi la risposta di Jim o di CD Smith. – knownasilya

14

È possibile usare un html <form>:

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

grazie, ha funzionato per me – animaonline

+0

Questo ha funzionato per me: Vardhini

Problemi correlati