に問題:のasp.net MVC強く型付けされたマスターページ - 私は2つのビューモデルを持っているタイプ
public class MasterPageViewModel
{
public string Meta { get; set; }
}
public class Entry : MasterPageViewModel
{
public int EntryID { get; set; }
public string Title { get; set; }
public DateTime PubDate { get; set; }
}
ビューに含まれているので、インデックスページには、エントリのリストを返します。そして、
...Inherits="System.Web.Mvc.ViewPage<IEnumerable<bl.Models.Entry>>"
マスターページは
...Inherits="System.Web.Mvc.ViewMasterPage<bl.Models.MasterPageViewModel>"
が含まれており、ここで私は取得していますエラーです:
辞書に渡されるモデル項目は 'System.Linq.EnumerableQuery`1 [bl.Models.Entry]'型ですが、この辞書には 'bl.Models.MasterPageViewModel'型のモデル項目が必要です。
マスターページでViewDataディクショナリを使用すると簡単にそのエラーを回避できますが、私の場合は強く型付けされたアプローチを使用します。将来、マスターページに表示されるカテゴリとタグのリストを追加できるようにしたいと考えています。
こんにちはエリック、 私は余分のviewmodelsを作成せずに、Html.RenderActionを使用して問題を解決しました。私は自分自身を繰り返すことを望まず、すべての共通のアクションをsepareコントローラ:CommonControllerに配置しました。次に、マスターページでは、Html.RenderAction( "Categories"、 "Common")またはHtml.RenderAction( "Tags"、 "Common")を使用します。各アクションは強く型付けされ、部分的なビューを返します。 – 303