古い PHP プログラムを ASP 形式にリファクタリングして C#/MVC 4 を学習しています。このプログラムの目的は、基本的なクライアント情報を含む、クライアントの予定のカレンダー エントリを作成することです。私の最近の課題は、ページ上の複数の @Html.DropDownLists に静的データをロードすることでした。これ ( MVC Html.DropDownList() に項目の静的リストを追加する方法) とそれ (この ASP.NET MVC SelectList を機能させるにはどうすればよいですか? )をハッキングした後、これを達成することができましたが、車輪の再発明...
モデルの一部: (CommonDataModel.cs)
public class apptCounties{
public IEnumerable<SelectItemList> Counties {get; set;}
public apptCounties()
{
Counties = new[]
{
new SelectListItem{Text="Cook",Value="Cook"},
new SelectListItem{Text="Dupage",Value="Dupage"},
new SelectListItem{Text="Lake",Value="Lake"}
};
}
}
ビューモデル: (ScheduleDataViewModel.cs)
public class ScheduleDataViewModel {
public apptClient ClientData {get; set;}
/* ^--This is from another model specific to this app - I'm attempting to use
"CommonDataModel.cs" to hold multiple lists of static data (Counties, Races,
Genders, etc) & then append app-specific data through specialized models.
I plan on expanding functionality later. */
public apptCounties Counties {get; set;}
public ScheduleDataViewModel()
{
ClientData = new apptClient();
Counties = new apptCounties();
}
}
コントローラー: (ScheduleController.cs)
public ActionResult Schedule()
{
var model = new ScheduleDataViewModel();
return View(model);
}
ビューの一部: (Index.cshtml - ScheduleDataViewModel に厳密に型指定)
@Html.DropDownList("Counties", Model.Counties)
あいまいな構文で申し訳ありません - 私のコードは目の前にありません! ビルドおよびテスト時に、少なくとも上記の一般的な考え方が機能していることを確認できます。
もっと単純な手順であるべきことを複雑にしすぎているのではないかと心配しています。ここのすべてのコンストラクターメソッドで実際に正しい軌道に乗っていますか、またはデータベースの利点なしで静的データリストを提供するためのよりエレガントなソリューションを誰かが提案できますか?