MVC - C jak kontroler
Każda metoda klasy kontrolera oznaczona jako public jest automatycznie akcja i możliwe jest dostanie się to niej z dowolnego miejsca przez odpowiednie wysterowanie URLem.
Aby metoda była akcją musi spełniać warunki:
- musi być public
- nie może być static
- nie może być metodą rozszerzeń (extension method)
- nie może to być konstruktor, getter ani setter
- nie może być metodą klasy bazowej kontrolera
- nie może mieć parametrów ref ani out
- nie może mieć otwartych typów generycznych
- nie może być static
- ViewResult
- EmptyResult
- RedirectResult
- JsonResult
- JavaScriptResult
- ContentResult
- FileContentResult
- FilePathResult
- FileStreamResult
- View -> ViewResult
- Redirect –> RedirectResult
- RedirectToAction –> RedirectToRouteResult
- RedirectToRoute –> RedirectToRouteResult
- Json –> JsonResult
- JavaScriptResult –> JavaScriptResult
- Content –> ContentResult
- File –> FileContentResult, FilePathResult, FileStreamResult - w zależności od przekazanych parametrów
Jeśli z akcja zwróci jakąś wartość np date - to zostanie ona automatycznie opakowana w typ ContentResult - czyli przetłumaczona na zwykły tekst i jako string przekazana do przeglądarki
using System; using System.Web.Mvc; namespace MvcApplication1.Controllers { public class WorkController : Controller { public DateTime Index() { return DateTime.Now; } } }Jeśli nie chcemy aby metoda była akcją możemy ją udekorować NonAction
using System.Web.Mvc; namespace MvcApplication1.Controllers { public class WorkController : Controller { [NonAction] public string CompanySecrets() { return "This information is secret."; } } }
Klasa kontrolera zawsze musi posiadać suffix Controller inaczej nie będzie można wywołać kontrolera
Komentarze
Prześlij komentarz