2012-05-25 20 views
5

Mögliche Duplizieren:
Mvc Html.ActionButtonMVC-Taste Aktion klicken

Mit ASP.NET MVC 3 Ich weiß, wie eine Verknüpfung zu einer Aktion-Methode sehr leicht zu schaffen, aber was ich möchte, ist wissen Wie machst du eine Schaltfläche (wenn geklickt) eine bestimmte Aktionsmethode aufrufen?

Antwort

22

Sachin,

Wenn Sie jQuery verwenden (die Sie erwähnen nicht, aber ich werde zeigen, wie es mit mvc ziemlich Standard ist), würden Sie Folgendes:

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

natürlich möchten Sie wahrscheinlich Ajax verwenden, aber dies ist ein grundlegendes Beispiel.

4

Ebenso wie Darin's Antwort über die Verwendung einer Form GET-Methode, können Sie auch Javascript-Funktionen aufrufen, die dann wiederum eine Aktion aufrufen.

Sie können das Klickereignis der Schaltfläche abfangen, wenn Sie darauf klicken und Ihren eigenen Code ausführen. Dieser Code kann eine Aktion aufrufen asynchron mit Ajax oder einfach zu einer Aktion Methode navigieren

Hier Probe Javascript, das die Schaltfläche Click-Ereignis ab

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

Oder Sie können eine Schaltfläche abfangen, die ein Attribut href hat

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

Dies fügt Parameter Informationen, die Sie in einen anderen Eingang auf der Seite gespeichert haben und hängt ihn an die URL und navigiert dann auf die Aktion

+0

Warum Javascript verwenden, wenn HTML bereits alles, was notwendig ist? Semantisches Markup zu schreiben ist immer besser als JavaScript. –

+0

Ja, aber das OP fragte nach einem Klick auf eine Schaltfläche, um eine Aktion aufzurufen, diese Aktion könnte nicht unbedingt ein Post eines Formulars sein, es könnte nur für die Navigation oder eine einfache Ajax-Anfrage sein .. –

+0

Wer sagte, dass ein Formular nur kann POST machen? Sie könnten das GET-Verb perfekt gebrauchen. –

4

Wie machst du das? Der gleiche Weg, wenn Sie MVC nicht verwenden würden.

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

Besser kein Inline-JavaScript zu haben. Siehe die Antwort von Jim oder CD Smith. – knownasilya

14

könnten Sie ein HTML verwenden <form>:

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

Danke, es funktionierte für mich – animaonline

+0

Das funktionierte für mich: Vardhini

Verwandte Themen