Specifica del tipo concreto di ActionResult

0

Ci sono un sacco di tipi che implementano ActionResult come ViewResult, PartialViewResult, JsonResult, RedirectResult e così via. Ho visto due approcci durante la creazione di metodi di azione, o utilizzare sempre ActionResult o specificare il tipo concreto che viene restituito dall'azione (se possibile). Che vantaggio ha specificare il tipo concreto ActionResult? Tutto quello che posso pensare al momento è che avere il tipo concreto renderebbe l'unità testare i controllori più facilmente (se in realtà scrivi test unitari per i controller).

    
posta user1242967 03.08.2017 - 11:07
fonte

1 risposta

2

What is the advantage of specifying a concrete type of ActionResult?

Impone che solo quel tipo possa essere restituito. Se specifichi JsonResult , puoi essere sicuro che ViewResult non viene restituito. Questo può essere utile se vuoi esplicitamente creare un'interfaccia JSON e non vuoi che altri aggiungano una vista.

having concrete type would make unit testing the controllers easier

Non proprio. Ti farebbe risparmiare un'asserzione e un cast nel tuo test unitario. Questa non è una buona ragione per non restituire un tipo polimorfico.

I documenti spiegano il motivazione per il ritorno di ActionResult

It is helpful to set the return type to ActionResult because in more complicated action methods, you may need to return different types of results for different scenarios. For example, the registration action method from the default MVC template, redirects the users if registration is successful, but displays the error messages if registration fails.

    
risposta data 03.08.2017 - 22:04
fonte

Leggi altre domande sui tag