私はMVC3とEFでブログの作成に取り組んでいます。私はすべてのモデルを作成しましたが、すべてがうまく機能しています。最新の投稿、コメント、およびすべてのカテゴリを含む適切なナビゲーションバーが必要だと判断しました。これはViewModelを使用するのに適した場所だと思いました。
記事、コメント、カテゴリをicollectionとして使用してViewModelを作成しました。コントローラーを作成し、LINQを実行してViewModelを埋め、部分的な共有ビューを作成しました。HTML.Partialなどを使用しようとすると、次のようになります。
ディクショナリに渡されるモデルアイテムのタイプはSystem.Collections.Generic.Listsですが、次のことを想定しています...
私がこれを使用しているページは、別のモデルに基づいた強く型付けされたページです。
私は何を間違っているのか、たぶん私は初心者の多くにいるのか、それとも間違った方法でやっているのか...助けて!?
編集:
発生したエラーは、部分ビューと呼んでいる行を強調しています
@ HTML.Partial( "_ SideBar")
SideBarはSideBarViewModelを使用しますが、呼び出し元の通常のページ( "Index.vbhtml")はArticleModelを使用します。この状況であなたの例がどのように機能するかはわかりません。これをたくさんのページで再利用したい...
SideBarViewModel:
Public Class SidebarViewModel
Public Property RecentPosts As ICollection(Of Article)
Public Property RecentComments As ICollection(Of Comment)
Public Property Categories As ICollection(Of Category)
End Class
ArticleModel:パブリッククラスArticle Public Property ArticleId As Integer Public Property Author As String
<DisplayFormat(DataFormatString:="{0:D}")>
Public Property CreatedOn As DateTime
<DisplayFormat(DataFormatString:="{0:D}")>
Public Property LastModified As DateTime
Public Property Content As String
Public Property Title As String
Public Property Excerpt As String
Public Property Status As String
Public Property IsPublic As Boolean
Public Overridable Property Categories As ICollection(Of Category)
Public Overridable Property Tags As ICollection(Of Tag)
Public Overridable Property Comments As ICollection(Of Comment)
End Class