@ Html.DropDownListFor Utilisation de base

Je viens juste de commencer à apprendre MVC4 et je dois avouer que je suis un peu remis en question par toutes le recours à des expressions lambda, les génériques et les types anonymes, surtout quand il y a beaucoup de fonctions surchargées. C'est un peu déroutant pour essayer de comprendre comment le code HTML Helpers de travail. Prendre le "DropDownListFor" Helper, par exemple. J'ai essayé d'extraire l'essentiel de mon code. C'est pourquoi vous voyez seulement une seulement une seule colonne, le "Genre", dans la table. J'espère que c'est encore syntaxiquement correct:

@model IEnumerable<BusinessLayer.Employee>
<table>
    @foreach (var employee in Model) 
    {    
        <tr>
            <td>
            @{

                var listItems = new List<SelectListItem>()
                {
                    new SelectListItem {Text = "Male",   Value = "M"},
                    new SelectListItem {Text = "Female", Value = "F"}
                };

                @Html.DropDownListFor(m => employee.Gender, listItems, listItems.Find(i => i.Value == employee.Gender).Text)                          
            }  

            </td>
        </tr>
    }
</table>        

Il y a deux Employés dans le Modèle objet, un IEnumerable de l'Employé et le code HTML suivant est généré

<table> 
    <tr>
        <td>
            <select id="employee_Gender" name="employee.Gender"><option value="">Male</option>
                <option value="M">Male</option>
                <option value="F">Female</option>
            </select>
    </tr>       
        </td>    
             <select id="employee_Gender" name="employee.Gender"><option value="">Female</option>
                <option value="M">Male</option>
                <option value="F">Female</option>
             </select>                
        </td>
</table>                

En regardant le premier paramètre de la DropDownListFor Méthode,

@Html.DropDownListFor(m => employee.Gender, ...

...Ai-je bien compris que le "m" représente l'instance de la classe du modèle qui a été adopté dans la Vue? Dans la ligne des exemples que j'ai vu, j'ai vu des exemples où le "m" semble faire référence à la classe du modèle, mais où le modèle est une instance unique de la classe, par exemple, un seul objet Employé, plutôt que d'une collection d'Employés comme c'est le cas ici, où je veux afficher un tableau, la liste des Employés. Je suis en supposant que l'intention du premier paramètre de la DropDownListFor Méthode est le "point/bind" pour un propriété dans le modèle, c'est pourquoi j'ai fait m => employé.Sexe. Est-ce que je devrais être en train de faire lorsque le modèle est une collection d'Employés plutôt que d'un seul Employé? Si oui, je suis confus quant à la façon dont je peux générer des Identifiants uniques pour les deux listes déroulantes qui ont été assignée à la fois "employee_Gender" pour les attributs NAME et ID.

Pour le 3e paramètre de l'aide DropDownListFor,

listItems.Find(i => i.Value == employee.Gender).Text

Est-ce raisonnable? La valeur pour l'employé.Le genre est soit "M" ou "F", mais le Texte de l'affichage est "Masculin" et "Féminin." Je suis confus si ce paramètre est utilisé pour spécifier une valeur par défaut "AUCUN SÉLECTIONNER" première valeur ou si ce paramètre est utilisé pour sélectionner dans la liste déroulante la valeur de l'Employé actuel---ou peut-être qu'il peut faire les deux? Par exemple, sélectionnez le Texte spécifié si trouve et sinon, ajouter le texte spécifié en tant que PREMIER? paramètre si la valeur n'est pas trouvée? Cela semble être la façon dont il travaille à partir de ce que je vois. Cette 3ème param être simplifiée ou est mon exemple raisonnable?

Merci pour votre patience dans la lecture de mes nombreuses multitude de questions en essayant de mieux le comprendre.

source d'informationauteur ChadD