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
0 komentarze:
Prześlij komentarz