2010-07-04 14 views
0

Dans mon contrôleur, je généré un SelectList que je passe à l'aide de la liste déroulante:asp.net mvc html Déroulant aide de la liste ne sont pas en sélectionnant l'option

<%= Html.DropDownList("abc123", Model.SomeList) %> 

Je regarde la querystring pour une valeur, qui est aide.

Je boucle puis à travers tous les éléments de la SelectList et si elle est égale à l'ID, je ferai:

item.Selected = true; 

L'action du contrôleur passe alors ce SelectList à la vue et à l'aide Html.

En mode débogage, je peux voir que la valeur est définie sur true, mais le html s'affiche sans sélectionner l'élément.

Quel peut être le problème?

+0

Dans la vue, commentez temporairement la liste déroulante, faites une boucle sur Model.SomeList et confirmez que le bon élément est "sélectionné". –

+0

Pourriez-vous montrer l'action du contrôleur qui effectue les étapes que vous avez décrites dans votre message? –

Répondre

2

Je ne sais pas ce que vous faites mal que vous avez montré 0 code, mais cela fonctionne vraiment:

public ActionResult Index(int? id) 
{ 
    var model = new SelectList(new[] 
    { 
     new { Id = 1, Name = "item 1" }, 
     new { Id = 2, Name = "item 2" }, 
    }, "Id", "Name", id); 
    return View(model); 
} 

et à votre avis:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SelectList>" %> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <%= Html.DropDownList("abc123", Model) %> 

</asp:Content> 

maintenant, si vous accédez à /home/index/1 le premier élément est sélectionné, si vous accédez à /home/index/2 le deuxième élément sélectionné.

Aussi si vous utilisez ASP.NET MVC 2.0, je vous recommande l'helper fortement typé DropDownListFor au lieu de DropDownList.

+0

merci cela fonctionne quand vous passez la valeur selectedValue dans le constructeur de selectList. – Blankman