Créer une action MVC

Lainé Vincent (Traduction)

Le but de ce tutoriel est de montrer comment créer une nouvelle action de contrôleur. Vous apprendrez quels sont les pré-requis d'une action. Vous apprendrez également comment vous empêcher qu'une méthode ne soit exposer comme action dans un contrôleur.

- Titre : Créer une action MVC

- Auteur : Lainé Vincent (Traduction)

- Parution : 22 avril 2009

- Licence : Copyright ® 2009 Vincent Lainé. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Traduction

- B. Ajouter une action à un contrôleur

- C. Empêcher une méthode publique d'être une action

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.

Controllers\HomeController.cs

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].

Controllers\WorkController.cs

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 :

Erreur lors de la navigation, CompanySecrets n'est pas une action