Orchardドキュメントのチュートリアルに従って、ユーザーコンテンツタイプにカスタムコンテンツパーツを追加するのに忙しいです。ドロップダウンに使用されるリストを次のように宣言するビューモデルを使用します。
public IEnumerable<SubscriptionPackageRecord> Packages { get; set; }
...
Packages = _userSubscriptionService.GetPackages()
はどこGetPackages
ですかIEnumerable<SubscriptionPackageRecord> GetPackages()
。次に、エディターテンプレートで、やや不格好なコードを使用してドロップダウンにデータを入力します。
@Html.DropDownListFor(model => model.PackageId,
Model.Packages.Select(s => new SelectListItem {
Selected = s.Id == Model.PackageId,
Text = s.Name,
Value = s.Id
}),
"Choose a package...")
モデルのPackagesプロパティをSelectList型で宣言し、への単純な1行の呼び出しを使用することをお勧めしますが、DropDownListFor
ビジネスレイヤークラスに近いコンテンツパーツドライバーで選択リストを作成する練習の良さには疑問があります。ドライバークラスにインポートし、そこでオブジェクトSystem.Web.Mvc
を作成して割り当てるのは悪い習慣ですか?SelectList