2017-06-27 5 views
0

In meinem Beispiel kann ich einen Controller nicht per Knopfdruck aufrufen. My Button-Code ist:Kein Aufruf des Controllers bei Tastendruck MVC

<button id="confirmsignup" name="confirmsignup" class="btn btn-success" onclick="location.href='@Url.Action("RegisterUser", "Home")'" >Sign Up</button> 

Mein Controller ist Homecontroller.

Meine Aktion Methode ist:

[HttpPost] 
    public ActionResult RegisterUser(UserInfo objUser) 
    { 

     int res= udaObj.RegisterUser(objUser); 
    } 
+0

'location.href' wird nicht zurückgebucht. Sie leitet die aktuelle Seite auf die Seite '/ Home/RegisterUser' mit dem Status 'HttpGet' um. Was versuchst du zu erreichen? – Win

+0

Wenn ich auf diese Schaltfläche klicke, muss ich die RegisterUser-Methode zum Einfügen meiner Daten treffen. –

Antwort

1

Die Linie location.href="someurl" wird eine neue GET-Anforderung an diese URL ausgeben, keine Form Post!

Um das Formular (und seine Daten) an die HttpPost-Aktionsmethode zu senden, umschließen Sie Ihre Formularelemente in einem form-Tag und lassen Sie den Button überreichen. Setzen Sie das Aktionsattribut des Formulars auf die Aktionsmethode "RegisterUser".

Sie können die Hilfsmethode Html.BeginForm verwenden, um das Form-Tag-Markup zu generieren.

@using(Html.BeginForm("RegisterUser","Home")) 
{ 
    <!-- your other input form elements goes here --> 

    <button id="confirmsignup" type="submit" 
        name="confirmsignup" class="btn btn-success" >Sign Up</button> 

} 
+0

Kann ich eine weitere (html.beginform ...) in meiner cshtml Seite verwenden? Weil mein anderes div eine andere Taste enthält, die LoginUser in demselben Controller treffen sollte. –

+0

Ja. Sie können mehr als ein Formular in derselben Ansicht haben. Aber stellen Sie sicher, dass sie nicht verschachtelt sind. Verschachtelte Formulare sind ungültig html – Shyju

+0

Wenn ich zwei Tasten 1 für die Anmeldung und 1 für die Registrierung verwendet, wird die Registrierung nicht umleiten, während Login Controller trifft. –

0
<button id="confirmsignup" name="confirmsignup" class="btn btn-success" onclick="location.href='@Url.Action("RegisterUser", "Home")'" >Sign Up</button> 

der obige Code definiert Verfahren wie hat HTTP GET .so Sie die Registeruser Methode, wenn die Schaltfläche klicken rufen cann't.

So verwenden Sie einfach MVC-Formular senden oder jquery Post, um diese HTTP-POST-Methode aufrufen Oder es in Betracht ziehen hat GET-Methode.

+0

Bedeutet, Kann ich diese Methode für beide Schaltflächen mit ihren entsprechenden Aktionsmethoden verwenden? –

Verwandte Themen