2013-08-05 2 views
0

У меня есть следующие в моей точки зрения в качестве ASP.NET MVC веб-приложения: -как получить доступ к выбранному значению из HTML.Dropdownlist

@Html.DropDownList("siteName", ((IEnumerable<TMS.Models.SDOrganization>)ViewBag.sites).Select(option => new SelectListItem { 
      Text = (option == null ? "None" : option.NAME), 
      Value = option.NAME, 
      Selected = (Model != null) && (Model.Resource.SiteDefinition != null) && (Model.Resource.SiteDefinition.SDOrganization != null) && (option.NAME.ToUpper() == Model.Resource.CI.SiteDefinition.SDOrganization.NAME.ToUpper()) 
     }), "Choose...") 

, но в настоящее время выпадающий список всегда будет показывать «Выбрать» , вместо отображения значения, связанного с текущим объектом модели. имея в виду, что если я напишу следующее непосредственно в своем представлении @Model.Resource.CI.SiteDefinition.SDOrganization.NAME.ToUpper();, он покажет правильные результаты.

ответ

1

Вы хотите использовать эту подпись метода DropDownList:

public static MvcHtmlString DropDownList(
    this HtmlHelper htmlHelper, 
    string name, 
    IEnumerable<SelectListItem> selectList, 
    string optionLabel 
) 

И, этот конструктор класса SelectList:

public SelectList(
    IEnumerable items, 
    Object selectedValue 
) 

Таким образом, сделать это следующим образом:

@Html.DropDownList("siteName", new SelectList(ViewBag.sites, Model.Resource.CI.SiteDefinition.SDOrganization.NAME), "None") 

Но убедитесь, что ваш ViewBag.sites не имеет никаких значений. Кроме того, следуйте стандартным соглашениям об именах. Вместо «sites» используйте «SiteName» вместо «siteName» и «Sites». И, самое главное, добавить Имя_узел к вашему ViewModel и использовать строго типизированную версию DropDownList, как показано ниже:

@Html.DropDownListFor(model => model.SiteName, new SelectList(ViewBag.Sites, Model.SiteName), "None") 
+0

Спасибо за yuor любезного ответ. но что, если модель равна null или Model.Resource имеет значение null. это вызовет исключение. ? –

+0

Если модель равна нулю, вы не хотите отображать что-либо в своем представлении, верно? Итак, просто поместите DropDownList внутри предложения if и проверьте, не является ли модель нулевым. – ataravati

+0

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

Смежные вопросы