La meilleure approche est décrite par Phil Haack.
Fondamentalement, ce est ce que vous faites:
public class AddActionParameterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
// Create integer parameter.
filterContext.ActionParameters["number"] = 123;
// Create object parameter.
filterContext.ActionParameters["person"] = new Person("John", "Smith");
}
}
La seule chose à corriger, c'est que si vous créez les paramètres de l'objet, puis votre classe (dans ce cas Personne) doit avoir un constructeur par défaut, sinon vous obtiendrez une exception.
Voici comment vous pouvez utiliser ce filtre:
[AddActionParameter]
public ActionResult Index(int number, Person person)
{
// Now you can use number and person variables.
return View();
}
Je suis "un peu" trop tard pour le parti, mais ce OMI est une belle approche.