IEnumerable(AffiliateComponentTypeView)プロパティを含む次のViewModel(TripSearchView)があります。このコレクションを使用してドロップダウンリストを設定する必要があります。 IEnumerableプロパティからSelectListItemを読み込む拡張クラスを作成しました。IEnumerableからSelectListItemを取り込む際にNULL REFエラーが発生しました<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の2番目のパラメータにNULL参照エラーを取得しています方法です。 IEnumerable<AffiliateComponentTypeView> ComponentTypes
に値が正しく入力されていることと、SelectListItemを読み込むロジックが正しく機能することを確認しました。なぜNULL Refエラーが出るのですか?私は何が欠けていますか?
<%= 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
私はまだ同じエラーが発生します。 – Alex
Reneをごめんなさい。あなたたちは正しい、それは私の悪かった。 "Model.TripSearch.ComponentType.ToString()"はNULLで、DropDownの名前を参照していました。 – Alex