2009-10-26 2 views
1

Comment lier la liste déroulante dans ASP.NET MVC?Comment lier la liste déroulante dans ASP.NET MVC?

Voici mon contrôleur:

public ActionResult Create() 
    { 
     DB db = new DB(); 

     var t = db.Players.ToList(); 

     MyPlayRoundHole model = new MyPlayRoundHole();   
     model.MyPlayers = t; 

     return View("Create", model); 
    } 

et à mon avis:

<tr> 
        <td>Player Name:</td> 
        <td><%= Html.DropDownList("SelectedItem", Model.MyPlayers)%></td> 
       </tr> 

et dans mon modèle:

namespace Golfsys.Model 
{ 
    public class MyPlayRoundHole 
    { 
     public IList<Player> MyPlayers { get; set; } 
    } 
} 

Répondre

1

Vous pouvez le faire en utilisant SelectLists http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist_members.aspx:

<%=Html.DropDownList("SelectedItem",new SelectList(Model.MyPlayers,"PlayerId","PlayerName",Model.MyPlayers.First().PlayerID)) %> 

Bien sûr, vous devrez vérifier si la liste MyPlayers est vide avant d'appeler First() pour définir la valeur initiale sélectionnée.

[Mise à jour: Comment traiter fullname]

Probablement la meilleure façon de lier deux propriétés est la création de nouveaux biens sur l'entité du joueur qui va les combiner (je ne pense pas qu'il y ait un moyen pour le mettre directement sur SelectList, aussi il vaut mieux comme ça parce que vous pouvez réutiliser FullName où jamais vous avez besoin):

public string FullName 
{ 
    get { this.FirstName + " " + this.LastName; } 
} 

Si vous utilisez un ORM qui crée cette entité, vous pouvez mettre cette propriété dans la classe partielle :

public partial class Player 
{ 
    public string FullName 
    { 
     get { this.FirstName + " " + this.LastName; } 
    } 
} 
+0

@Misha: Merci pour cela. Comment puis-je combiner "FirstName" et "LastName" dans ce cas. – dcpartners

+0

Voir la mise à jour de la réponse. –

Questions connexes