У меня есть следующий ViewModel (TripSearchView), который содержит свойство IEnumerable (of AffiliateComponentTypeView), я должен заполнить раскрывающийся список с помощью этой коллекции. Я написал класс расширения, который заполняет SelectListItem из свойства IEnumerable.
public class TripSearchView
{
public IEnumerable<AffiliateComponentTypeView> ComponentTypes { get; set; }
//More fields...
}
public static class DropDownHelper
{
public static IEnumerable<SelectListItem> ToSelectListItems(
this IEnumerable<AffiliateComponentTypeView> componentTypes, int selectedId)
{
return
componentTypes.Select(componentType =>
new SelectListItem
{
Text = componentType.ComponentDesc,
Value = componentType.Component_Type
});
}
}
Вот как я это называю в моем aspx, но я получаю ошибку NULL REFERENCE для второго параметра Html.DropDownList. Я удостоверился, что IEnumerable<AffiliateComponentTypeView> ComponentTypes
правильно заполнен значениями, и логика для заполнения SelectListItem работает правильно. Почему я получаю ошибку NULL Ref? Чего мне не хватает?
<%= Html.DropDownList(Model.TripSearch.ComponentType.ToString(), DropDownHelper.ToSelectListItems(Model.TripSearch.ComponentTypes,0))%>
Я заполняю "ComponentTypes" коллекцией в действии моего контроллера перед вызовом View.
public ActionResult Index()
{
SearchView SearchView = new SearchView();
TripSearchView TripSearchView = new TripSearchView();
TripSearchView.ComponentTypes = _referenceDataService.AffiliateComponentTypes(base.GetAffiliateID());
SearchView.TripSearch = TripSearchView;
ViewData["ComponentTypesList"] = _referenceDataService.AffiliateComponentTypes(base.GetAffiliateID()).Select(componentType =>
new SelectListItem
{
Text = componentType.ComponentDesc,
Value = componentType.Component_Type
});
return View(SearchView);
}