【发布时间】:2011-02-09 01:10:13
【问题描述】:
我有以下包含 IEnumerable(of AffiliateComponentTypeView) 属性的 ViewModel (TripSearchView),我必须使用此集合填充下拉列表。我编写了一个扩展类,它从 IEnumerable 属性填充 SelectListItem。
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 中调用它的方式,但我收到 Html.DropDownList 的第二个参数的 NULL REFERENCE 错误。我已确保 IEnumerable<AffiliateComponentTypeView> ComponentTypes 正确填充了值,并且填充 SelectListItem 的逻辑正常工作。为什么我会收到 NULL Ref 错误?我错过了什么?
<%= Html.DropDownList(Model.TripSearch.ComponentType.ToString(), DropDownHelper.ToSelectListItems(Model.TripSearch.ComponentTypes,0))%>
在调用视图之前,我在控制器操作中使用集合填充“ComponentTypes”。
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);
}
【问题讨论】:
标签: asp.net asp.net-mvc-2