Puis-je personnaliser mes données de champ de texte dans un MVC SelectList pour une utilisation avec le Html.DropDownList sans avoir à créer une nouvelle structure ou classe?
Je suis entrain de créer un SelectList à partir d'une Liste(T) de classe à utiliser pour remplir un HtmlHelper.DropDownList dans un MVC vue, la définition de la dataValueField et propriétés de datatextfield dans la Liste de sélection constructeur. Le texte qui doit être affiché n'est pas excatly correspondre à l'une des propriétés de ma classe et doit toujours être manipulé. Est-il possible de le faire par le biais de la SelectList constructeur? Je me rends compte que je pouvais le faire par la création d'une structure ou de la classe à utiliser comme IEnumerable d'entrée pour le Sélectionner de la liste, mais je préfère pas si je n'ai pas besoin d'.
Mon Contrôleur de code actuellement:
var members = MemberService.GetAll();
this.ViewData["Members"] = new SelectList(members, "Id", "Name");
Mon point de Vue, le code est actuellement:
<%= Html.DropDownList("Members") %>
Au lieu de "Nom de famille" comme mon champ d'affichage, je voudrais être en mesure de preformat le domaine en combinant (et mise en forme) deux propriétés.
OriginalL'auteur Val M | 2010-02-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une boucle sur la liste des membres, en ajoutant les valeurs d'une nouvelle liste que vous créez ensuite le SelectList. Quelque chose comme:
Je ne me souviens pas si vous pouvez utiliser un type anonyme comme ça ou pas, mais si pas, vous pouvez créer une petite classe de données à utiliser comme un intermédiaire.
Au lieu d'ajouter de type anonyme, vous pouvez ajouter de classe partielle de votre modèle et ajouter une propriété: public string CustomName { get { return Nom + "" + Nom } } C'est le rendre utile dans plusieurs endroits à bien le projet.
OriginalL'auteur palehorse
Vous pouvez créer une méthode d'extension et de définir ce que vous voulez que le texte. Il pourrait être quelque chose comme
Puis vous appelez cette méthode:
OriginalL'auteur uvita
Pour ceux qui l'utilisation de LINQ.
Au lieu de:
vous pouvez utiliser:
et ensuite utiliser ViewBag.Liste des membres de votre Rasoir code comme
OriginalL'auteur Azoro