2010-07-17 8 views
7

Mi dispiace fare una domanda così fondamentale, ma è un po 'fondamentale per me. Per capire meglio i filtri, ho bisogno di capire queste nozioni. Sebbene io sia su ASP.NET MVC da qualche mese e ora sto facendo delle belle demo, sono più familiarizzato con il concetto di metodo Action che con il risultato dell'azione.ASP.NET MVC: quali sono i metodi di azione? Azione Risultato? Come sono collegati?

Cosa sono:

  1. metodo d'azione?
  2. Azione Risultato?
  3. Come sono correlati?

Diciamo che ho questo

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

Come quei concetti si applicano al codice di cui sopra?

Grazie per l'aiuto.

risposta

9

Nell'esempio ShowPerson è l'azione. Ogni azione deve restituire un risultato di azione (nel tuo caso restituisce una vista). Pertanto, quando viene invocato un metodo di azione del controllore, viene elaborato e decide quale vista sarebbe meglio adatta per rappresentare il modello.

Esistono molti risultati di azione diversi che è possibile utilizzare. Tutti derivano da ActionResult:

  • ViewResult - se si vuole restituire una vista
  • FileResult - se volete scaricare un file
  • JsonResult - se si vuole serializzare qualche modello in JSON
  • ContentResult - se si desidera restituire il testo semplice
  • RedirectResult - se si desidera reindirizzare ad altra azione
  • HttpUnauthorizedResult - se si vuole indicare che l'utente non è autorizzato ad accedere a questa azione
  • FooBarResult - di conseguenza un'azione personalizzata che hai scritto
+0

Ho una migliore comprensione ora. Quindi, un'azione Risultato è solo un metodo normale. Posso persino vedere, ad esempio Vista (oggetto). Grazie mille. – Richard77

+2

@ Richard77, un risultato di azione è il tipo di ritorno di un metodo regolare (che è chiamato azione). 'View (object)' è semplicemente un metodo definito sulla classe 'Controller' che restituisce un' ViewResult'. –

+0

Ok, vedo ancora meglio. – Richard77

1

risposta da @ Darin-Dimitrov è molto fino al punto. Ma vedo la spiegazione fornita su MSDN anche molto utile.

I metodi di azione hanno in genere un mapping one-to-one con interazioni utente . Esempi di interazioni utente includono l'immissione di un URL nel browser, facendo clic su un collegamento e inviando un modulo. Ciascuno di queste interazioni utente provoca l'invio di una richiesta al server. In ogni caso, l'URL della richiesta include informazioni che il framework MVC utilizza per richiamare un metodo di azione.

Quando un utente immette un URL nel browser, l'applicazione MVC usa regole di routing che si definiscono nel file Global.asax per analizzare l'URL e per determinare il percorso del controller. Il controller quindi determina il metodo di azione appropriato per gestire la richiesta.Per impostazione predefinita , l'URL di una richiesta viene considerato come percorso secondario che include il nome del controller seguito dal nome dell'azione. Ad esempio, se un utente immette l'URL http://contoso.com/MyWebSite/Products/Categories, , il percorso secondario è/Prodotti/Categorie. La regola di routing predefinita considera "Prodotti" come nome prefisso del controller, che deve terminare con "Controller" (come ProductsController). Tratta "Categorie" come il nome dell'azione. Pertanto, la regola di routing richiama il metodo Categorie del controller Prodotti per elaborare la richiesta . Se l'URL termina con/Products/Detail/5, la regola di routing predefinita considera "Detail" come il nome dell'azione e viene richiamato il metodo Detail del controller Products per elaborare la richiesta. Per impostazione predefinita , il valore "5" nell'URL verrà passato al metodo Dettaglio come parametro.

+0

@bummi Sono d'accordo con il tuo punto. Ho modificato la risposta. Grazie. –