Traduction▲
Cet article est la traduction la plus fidèle possible de l'article original : Creating an Action
B. Ajouter une action à un contrôleur▲
Pour ajouter une nouvelle action à un contrôleur il suffit d'ajouter une nouvelle méthode à une classe héritant de la classe Controller. Par exemple le contrôleur dans le code en dessous, possède une action nommée Index() et autre nommée SayHello(). Les deux méthodes sont exposées entant qu'action.
using
System;
using
System.
Collections.
Generic;
using
System.
Linq;
using
System.
Web;
using
System.
Web.
Mvc;
namespace
MvcApplication1.
Controllers
{
[HandleError]
public
class
HomeController :
Controller
{
public
ActionResult Index
(
)
{
return
View
(
);
}
public
string
SayHello
(
)
{
return
"Hello!"
;
}
}
}
Pour qu'une méthode soit exposée à l'univers entier entant qu'action, elle doit respecter certaines règles :
- La méthode doit être publique
- la méthode ne doit pas être statique
- La méthode ne doit pas être une méthode d'extension
- La méthode ne doit pas être un constructeur, un getter ou un setter
- La méthode doit pas avoir de paramètres générique
- La méthode n'est pas une méthode de la classe Controller de base
- La méthode ne doit pas avoir de paramètres marqués avec ref ou out
Notez qu'il n'y a aucune restriction sur le type du retour de la méthode. Le retour peut être un string, un DateTime, une instance d'une classe quelconque, ou void. Le framework ASP.NET MVC converti tout les retours qui ne sont des ActionResult en string et renvoi le rendu dans le navigateur.
Quand vous ajoutez une méthode qui respecte ces contraintes, la méthode est exposée en tant qu'action. Soyez prudent avec cela, une action peut être appelée depuis n'importe qui connecté sur internet. Par exemple ne créez pas une action DeleteMyWebSite() !
C. Empêcher une méthode publique d'être une action▲
Si vous avez besoin de créer une méthode publique dans un contrôleur et que vous ne souhaitez pas l'exposer entant qu'action, vous pouvez Empêcher la méthode d'être utilisée entant qu'action grâce à l'attribut [NonAction]. Par exemple, dans le code en dessous, le contrôleur contient une méthode publique nommée CompanySecrets() qui est décoré avec l'attribut [NonAction].
using
System.
Web.
Mvc;
namespace
MvcApplication1.
Controllers
{
public
class
WorkController :
Controller
{
[NonAction]
public
string
CompanySecrets
(
)
{
return
"This information is secret."
;
}
}
}
Si vous tentez de naviguer vers l'action CompanySecrets() en tapant /Work/CompanySecrets dans votre navigateur, vous obtiendrez le message d'erreur suivant :