2011-12-29 1 views
0

J'ai un rapport qui montre une liste avec les colonnes suivantes:DropDownList ou DropDownListFor dans MVC3 Razor?

A key column 
A dropdown list showing a list of possible status 
A title 

Voici le code de rasoir:

@foreach (AdminSummary adminSummary in @Model.AdminSummaries) { 
       index++; 
       <div class="rep_tr0"> 
        <div class="rep_td0" id="[email protected](index)">@adminSummary.RowKey</div> 
        <div class="rep_td0"><a href="/Administration/Products/Edit?&[email protected]&[email protected]&[email protected]">Edit</a></div>    
        <div class="rep_td0"><a href="/Administration/Products/Delete?&[email protected]&[email protected]&[email protected]">Delete</a></div> 
        <div class="rep_td0">@Html.DropDownListFor(??, ??)</div> 
        </div> 
      } 

J'ai aussi la classe suivante:

public static class AdminStatusReference 
    { 

     public static IEnumerable<SelectListItem> GetAdminStatusOptions() 
     { 
      return new[] 
       { 
        new SelectListItem { Value = "1", Text = "Released" }, 
        new SelectListItem { Value = "2", Text = "Review" }, 
        new SelectListItem { Value = "3", Text = "New" } 
       }; 
     } 

} 

Qu'est-ce que Je ne suis pas sûr est comment je peux relier ces derniers. Je sais que dans le modèle que je peux stocker la liste des options d'état quelque chose comme ceci:

vm.StatusList = GetAdminStatusOptions(); 

Mais comment puis-je créer le dropdownlist. Je suis très confus avec toutes les options de DropDownList et DropDownListFor. Lequel dois-je utiliser et comment puis-je envoyer la liste des statuts?

Répondre

1

Ce dont je ne suis pas sûr, c'est de savoir comment les relier.

Cela dépend de l'aspect du modèle.

Mais voici ce que vous pouvez faire:

@for (var index = 0; index < Model.AdminSummaries.Count; index++) 
{ 
    <div class="rep_tr0"> 
     <div class="rep_td0" id="[email protected](index)"> 
      @Model.AdminSummaries[index].RowKey 
     </div> 
     <div class="rep_td0"> 
      @Html.DropDownListFor(
       x => x.AdminSummaries[index].Status, 
       AdminStatusReference.GetAdminStatusOptions() 
      ) 
     </div> 
     <div class="rep_td0"> 
      @Model.AdminSummaries[index].Title 
     </div> 
    </div> 
} 
+0

Merci Darin, j'étais occupé à corriger ma question et vous me avez déjà une réponse. Je vais vérifier ça maintenant. –

+0

Désolé de prendre si longtemps pour vous répondre. AdminSummaries est la suivante: public IEnumerable AdminSummaries {get; ensemble; } Lorsque j'essaie d'exécuter le code, j'obtiens un message d'erreur d'exécution: Message d'erreur du compilateur: CS0021: Impossible d'appliquer l'indexation avec [] à une expression de type 'System.Collections.Generic.IEnumerable ' –

+0

@ Samantha2, OK, changez-le en IList 'ou' AdminSummary [] 'pour que vous puissiez accéder aux éléments par index. –