2010-07-17 3 views
7

Es tut mir leid, so eine grundlegende Frage zu stellen, aber es ist irgendwie grundlegend für mich. Um Filter besser zu verstehen, muss ich diese Begriffe verstehen. Obwohl ich seit einigen Monaten auf ASP.NET MVC bin und jetzt nette Demos mache, bin ich eher mit dem Action-Methodenkonzept als mit dem Action-Ergebnis vertraut.ASP.NET MVC: Was sind Aktionsmethode? Aktion Ergebnis? Wie hängen sie zusammen?

Was sind:

  1. Aktion Methode?
  2. Aktion Ergebnis?
  3. Wie sind sie verwandt?

Lasst uns sagen, dass ich dieses

public ViewResult ShowPerson(int id) 
{ 
    var friend = db.Persons.Where(p => P.PersonID == id).First(); 
    return View(friend); 
} 

haben, wie diese Konzepte auf den oben genannten Code anwenden?

Danke für Ihre Hilfe.

Antwort

9

In Ihrem Beispiel ShowPerson ist die Aktion. Jede Aktion muss ein Aktionsergebnis zurückgeben (in Ihrem Fall wird eine Ansicht zurückgegeben). Wenn also eine Controller-Aktionsmethode aufgerufen wird, führt sie eine Verarbeitung durch und entscheidet, welche Ansicht am besten für die Darstellung des Modells geeignet ist.

Es gibt viele verschiedene Aktionsergebnisse, die Sie verwenden könnten. Sie alle stammen aus ActionResult:

  • ViewResult - wenn Sie einen Blick
  • FileResult zurückkehren wollen - wenn Sie eine Datei
  • JsonResult herunterladen möchten - wenn Sie einige Modell in JSON
  • serialisieren möchten ContentResult - wenn Sie wollen
  • RedirectResult Klartext zurückzukehren - wenn Sie
  • auf eine andere Aktion umleiten möchten
  • HttpUnauthorizedResult - wenn Sie angeben möchten, dass der Benutzer diese Aktion nicht berechtigt ist,
  • FooBarResult zuzugreifen - eine benutzerdefinierte Aktion Ergebnis, das Sie
+0

Ich habe jetzt ein besseres Verständnis. Ein Aktionsergebnis ist also nur eine normale Methode. Ich kann sogar sehen, zum Beispiel View (Objekt). Vielen Dank. – Richard77

+2

@ Richard77, ein Aktionsergebnis ist der Rückgabetyp einer regulären Methode (die als Aktion bezeichnet wird). 'View (object)' ist einfach eine Methode, die in der Klasse 'Controller' definiert ist und ein' ViewResult' zurückgibt. –

+0

Ok, ich sehe noch besser. – Richard77

1

Antwort von @ Darin-dimitrov ist sehr viel bis zu dem Punkt, geschrieben hat. Aber ich sehe Erklärungen auf MSDN auch sehr hilfreich.

Aktionsmethoden verfügen normalerweise über eine Eins-zu-eins-Zuordnung mit Benutzer Interaktionen. Beispiele für Benutzerinteraktionen sind die Eingabe einer URL in den Browser, das Klicken auf einen Link und das Absenden eines Formulars. Jeder von diese Benutzerinteraktionen verursacht eine Anforderung an den Server gesendet werden. In enthält die URL der Anfrage in jedem Fall Informationen, die das MVC Framework zum Aufrufen einer Aktionsmethode verwendet.

Wenn ein Benutzer eine URL in den Browser eingibt, verwendet die MVC Anwendung Routing-Regeln, die in der Datei Global.asax definiert sind, um die URL zu analysieren und den Pfad des Reglers zu bestimmen. Der Controller bestimmt dann die geeignete Aktionsmethode für die Anforderung.Nach Standard wird die URL einer Anfrage als ein Unterpfad behandelt, der den Controller-Namen gefolgt von dem Aktionsname enthält. Wenn beispielsweise ein Benutzer die URL http://contoso.com/MyWebSite/Products/Categories, eingibt, lautet der Unterpfad/Products/Categories. Die Standard-Routing-Regel behandelt "Produkte" als Präfix-Name des Controllers, der mit "Controller" enden muss (z. B. ProductsController). Es behandelt "Kategorien" als den Namen der Aktion. Daher ruft die Routing-Regel die Categories-Methode des Products-Controllers auf, um die Anforderung zu verarbeiten. Wenn die URL mit/Products/Detail/5 endet, behandelt die Standardroutingregel "Detail" als Name der Aktion und die Detailmethode des Produktcontrollers wird aufgerufen, um die Anforderung zu verarbeiten. Nach Standard wird der Wert "5" in der URL als Parameter an die Detailmethode übergeben.

+0

@bummi Ich stimme deinem Standpunkt zu. Ich habe die Antwort bearbeitet. Vielen Dank. –