2013-03-01 11 views
8

Wenn wir auf die Schaltfläche Senden eines Formulars klicken, wird die Aktion des Controllers, der HTTPPost Attribut hat, aber was heißt wenn ich anrufen möchten, oder eine Aktion ausführen, wenn eine normale HTML-Schaltfläche Obwohl folgende Artikel angeklickt wirdAufruf einer bestimmten Aktion eines Controllers auf den Klick auf HTML-Schaltfläche (nicht senden oder Form post-Schaltfläche) Asp.net MVC

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

HTML button calling an MVC Controller and Action method

sagt dem Ansatz, aber diese beiden sind mit Controller-Namen in Sicht, also Blick muss über Controller wissen, ich schaue g für eine Antwort, die View nicht über Controller wissen muss. weil Ansichten Unabhängig vom Controller zu sein hat, Views sollte Also nicht wissen, über Controller, wenn Sie die Antwort dann wissen Sie antworten

Antwort

16

jede Form, die Ihre Benutzer leitet durch

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

oder

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

wird tun, was Sie wollen.

, die mit einer

  • Form
  • Schaltfläche Link

Es ist das Ziel, das zählt, sein können. Die Ansicht "weiß" nichts über die Aktion oder den Controller. Der Helfer tut es.

0

Um eine MVC-Aktion von der Client-Seite (d. H. Von einer Ansicht) auszuführen, müssen Sie eine URL (mit jedem Verb: get, post, put, etc) treffen. Um eine Aktionsform einer Ansicht auszuführen, müssen Sie daher die URL dieser Aktion kennen. Diese URL wird standardmäßig direkt der controllername/actionname zugeordnet, aber Sie können diese neu definieren, wenn Sie mehr Abstraktion zwischen Ansicht und Controller erstellen möchten.

Vorausgesetzt, dass Ihre Schaltfläche nur ein Link zu einer URL sein muss oder mit js verbunden sein muss, um eine Ajax HTTP-Anfrage zu machen.

Hoffe, dass hilft.

0

Sie können nicht zwei Aktionen auf demselben Controller mit demselben Namen und demselben HTTP-Verb ausführen. Was du fragst, ergibt keinen Sinn. Sie könnten die gleiche Controller-Aktion aufrufen wie die, die die Ansicht gerendert hat, ohne einen Aktions- und Controllernamen anzugeben. Der Grund, warum Html.BeginForm() ohne Angabe eines Aktions- und Controllernamens funktioniert, liegt daran, dass das Formular eine POST-Anfrage an den Server sendet und Sie die zwei Aktionen unterscheiden können.

Verwandte Themen