我有以下ViewModel(TripSearchView)其中包含IEnumerable(的AffiliateComponentTypeView)屬性,我必須使用此集合填充下拉列表。我寫了一個擴展類,它從IEnumerable屬性填充SelectListItem。NULL REF錯誤,而從IEnumerable填充SelectListItem <T>
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的第二個參數。我已確認IEnumerable<AffiliateComponentTypeView> ComponentTypes
正確填充了值,填充SelectListItem的邏輯正常工作。爲什麼我會得到一個NULL引用錯誤?我錯過了什麼?
<%= Html.DropDownList(Model.TripSearch.ComponentType.ToString(), DropDownHelper.ToSelectListItems(Model.TripSearch.ComponentTypes,0))%>
我在調用View之前在控制器動作中用集合填充「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);
}
Rene,我也嘗試了你的建議,並且仍然出現同樣的錯誤。 – Alex 2011-02-08 15:50:16
我仍然得到相同的錯誤。 – Alex 2011-02-08 16:35:43