10 votes

ASP.NET MVC - Remplir les listes déroulantes les plus utilisées

Je me demandais quelle était la meilleure pratique pour remplir les listes déroulantes couramment utilisées dans ASP.NET MVC. Par exemple, j'ai une sélection de pays et d'État qui est souvent utilisée dans mon application. Il semble sale de remplir un modèle de vue et de se lier à ce modèle de vue à partir de mon contrôleur pour chaque vue que je veux contenir une telle liste déroulante.

Comment les gens remplissent-ils leurs listes déroulantes dans ce cas ? - Une classe de base personnalisée avec cette fonction intégrée ? Classes d'aide, etc.

Merci d'avance,

JP

7voto

çağdaş Points 10552

Vous pouvez avoir un RequiresStateList pour injecter cette fonctionnalité commune dans les actions qui en ont besoin.

public class RequiresStateList : ActionFilterAttribute {
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
    {
        filterContext.Controller.ViewData["StateList"] = GetStates();
    }
}

Et votre action

[RequiresStateList]
public ActionResult Index() {
    return View();
}

Maintenant, vous pouvez obtenir cette liste à partir de la ViewData dans votre vue.

3voto

WayneC Points 1101

Les aides HTML personnalisées sont la voie à suivre...

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs

0voto

MrDustpan Points 2900

Je suis un grand fan de la création de modèles de vues qui correspondent (modélisent) exactement à chaque vue. Ainsi, si vous avez une vue avec une liste déroulante d'États, mon modèle de vue pour cette page aura une collection d'États de ListItems.

Je ne m'inquiéterais pas d'avoir des modèles de vue avec une collection d'états. Au lieu de cela, je centraliserais la logique pour obtenir les états, quelque chose comme :

viewModel.States = StatesHelper.GetStates(); // returns IList<ListItem>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X