wake-up-neo.com

Aufrufen einer bestimmten Aktion eines Controllers durch Klicken auf die Schaltfläche "HTML" (Schaltfläche "Nicht senden" oder "Formular") Asp.net MVC

Wenn wir auf die Schaltfläche "Senden" eines Formulars klicken, wird die Aktion des Controllers mit dem Attribut "HTTPPost" aufgerufen. Was passiert, wenn ich eine Aktion aufrufen oder ausführen möchte, wenn auf eine normale HTML-Schaltfläche Geklickt wird? Obwohl folgende Artikel angezeigt werden 

http://www.codeproject.com/Tips/198477/Calling-a-MVC-Controller-and-Action-Method-using-H

HTML-Schaltfläche zum Aufrufen einer MVC-Controller- und Aktionsmethode

sagt der Ansatz, aber beide verwenden den Controllernamen in der Ansicht. Also muss View über Controller wissen. Ich suche nach einer Antwort, die View über Controller nicht kennen muss. , da Ansichten vom Controller unabhängig sein müssen Ansichten sollten nicht über Controller (.____.) Bescheid wissen. Wenn Sie also die Antwort kennen, antworten Sie bitte

8
Yogesh Joshi

jedes Formular, das den Benutzer anweist, die von erstellt wurde 

<a href='@Url.Action("{action}", "{controller}")'> click me </a> 

oder

@using(BeginForm("{action}", "{controller}")

wird tun was du willst. 

Das kann mit einem sein 

  • bilden 
  • schaltfläche Link

Auf das Ziel kommt es an. Die Ansicht "weiß" nichts über die Aktion oder den Controller. Der Helfer tut es.

16
Dave Alperovich

Um eine MVC-Aktion von der Clientseite (dh von einer Ansicht) aus auszuführen, müssen Sie eine URL (mit einem beliebigen Verb: get, post, put usw.) angeben. Daher müssen Sie, um eine Aktion aus einer Ansicht auszuführen, eine Ansicht ausführen Sie müssen die URL dieser Aktion kennen. Standardmäßig wird diese URL direkt dem controllername/actionname zugeordnet. Sie können diese jedoch neu definieren, wenn Sie mehr Abstraktion zwischen Ansicht und Controller erstellen möchten. 

Aus diesem Grund muss Ihre Schaltfläche lediglich ein Link zu einer URL sein oder mit js verlinkt sein, um eine Ajax-http-Anfrage auszuführen. 

Hoffentlich hilft das. 

0
Ben

Sie können nicht zwei Aktionen auf demselben Controller mit demselben Namen und demselben HTTP-Verb ausführen. Also, was Sie fragen, macht keinen Sinn. Sie können dieselbe Controller-Aktion aufrufen wie die, die die Ansicht gerendert hat, ohne eine Aktion und einen Controller-Namen anzugeben. Der Grund, warum Html.BeginForm() ohne Angabe einer Aktion und eines Controllernamens funktioniert, liegt darin, dass das Formular eine POST -Anforderung an den Server sendet und Sie die zwei Aktionen unterscheiden können.

0
Darin Dimitrov