2012-04-18 3 views
0

У меня есть функция, которая заполняет создающий dropdownlist в ASP.NET MVC.ASP.NET MVC3 Dropdownlist никогда не выбирает значение в окне редактирования

public static MvcHtmlString countryDropDown(this HtmlHelper helper, string name, string optionLabel, object selectedValue) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(HttpContext.Current.Server.MapPath("~/App_Data/countries.xml")); 

     StringBuilder b = new StringBuilder(); 

     b.Append(string.Format("<select name=\"{0}\" id=\"{0}\">", name)); 
     if (!string.IsNullOrEmpty(optionLabel)) 
      b.Append(string.Format("<option value=\"\">{0}</option>", optionLabel)); 

     foreach (XmlNode node in doc.SelectNodes("//country")) 
     { 
      string selected = string.Empty; 
      if (node.Attributes["name"].Value == selectedValue as string) 
      { 
       selected = "selected=\"selected\""; 
      } 
      b.Append(string.Format("<option value=\"{0}\" {2}>{1}</option>", node.Attributes["name"].Value, node.Attributes["name"].Value, selected)); 
     } 
     b.Append("</select>"); 

     return MvcHtmlString.Create(b.ToString()); 
    } 

Я использую эту функцию Создать и виды редактирования, как:

@Html.countryDropDown("Country"," ", ViewData["Country"]) 

Он показывает список стран прекрасно, но проблема в том, что я никогда не выбираю сохраненное значение в странице редактирования. Как изменить код, чтобы он мог выбрать значение на странице редактирования.

+1

Вы пробовали пошагового свой код с помощью отладчика, чтобы понять, почему ваш, если не удастся? –

+0

получает значение null в параметре selectedValue. то есть ViewData ["Страна"] отправляет нуль. – hotcoder

+0

Тогда это может быть вашей проблемой –

ответ

0

решаемые с помощью

@Html.countryDropDown("Country"," ", ViewData.Eval("Country")) 

вместо

@Html.countryDropDown("Country"," ", ViewData["Country"] 
Смежные вопросы