私のプロジェクトのすべてのコントローラは、エンティティモデルでプロパティを持つベースコントローラから継承します。ASP.NET MVC:ヘルパーはデータを取得できますか?
私は、世界の都市を示すビューを持っており、国別にフィルタリングするオプションがあるとしましょう。国フィルタは、データベースの国のドロップダウンリストです。ドロップダウンリストのHtmlヘルパーはIEnumerable<SelectItem>
を要求します。
その情報を私はこのようになりますHtmlHelper
作成する場合さて、それはokです:
public static IEnumerable<SelectListItem> GetCountries(HtmlHelper htmlHelper)
{
return (from c in ((BaseController) htmlHelper.ViewContext.Controller).Entities.Countries
orderby c.Name
select new SelectListItem() {Text = c.Name, Value = c.ID});
}
Iそれが可能であれば問題はないが、それはのMVCの方法に応じて、[OK]の場合を物事をする。 (または、コントローラ内のViewDataに国のコレクションを置く必要がありますか?)
をrenderdropdown呼び出すしかし、どのように私は私のビューページ内の国で入手できますすることができます表示してコントローラが開始されたオブジェクトを渡すのだろうか? 私のViewPageの主な項目は、IEnumerableです。ですから、私は、CountriesコレクションをViewData(ViewData ["countries"])に入れなければなりません。 元のViewPageを継承し、Entitiesプロパティを追加する新しいViewPageを作成することを示唆しています(多くの依存性のようです)。 –
Gidon
都市と国の両方を保持するビューモデルを作成できます。 – Morph
ViewModelは良いと思うこともありますが、多くのページがメインデータから構成され、余分なデータが含まれているため、すべてのページでそれを使用すると、非常に多くのViewModelが作成されています。 – Gidon