2009-04-10 14 views
1

セットアップは次のとおりです - 私は製品を一覧表示するビューを持っています。同じページに、カテゴリをリストするユーザーコントロールビューがあります。は強く型付けされたユーザーコントロールビューは許可されていませんasp.net mvc?

は、私はそうのような表示に製品のリストを渡します。

return View(myProducts); 

ユーザーコントロールのビューは、それがViewDataを[「カテゴリー」]今

経由で必要なデータを取得し、私が使用しようとするとこのような強く型付けされたユーザーコントロールビュー:

T:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<myData.Models.Category>>" %> 

は、私はこのエラーを取得します辞書に渡されたモデル項目の型は 'System.Collections.Generic.List 1[myData.Models.Product]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [myData.Models.Category]'です。

ビューに「Product」リストを渡しているので、ユーザーコントロールビューが混乱しているようです。だから私は強いタイピングを削除する場合:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 

すべてうまくいきます。

強く型付けされたユーザーコントロールビューは許可されていませんか?それとも、何か間違っているだけですか?

答えて

0

部分ビューをレンダリングするときは、ViewData ["Category"]をコントロールに渡すモデルとして使用します。

<% Html.RenderPartial("MyUserControl", ViewData["Category"], ViewData); %> 
+0

私が探していたもの、感謝! – codette

0

タイプAの一般リストは、タイプBの一般リスト(BはAから派生したもの)に割り当てられません。これは.Netのすべての汎用コレクションの一般的なルールです。

+0

私は問題は彼がページの部分ビューに同じモデルを使用していることだと思います。定義によると、それらは完全に異なるモデルでなければならず、私は彼がちょうど彼が部分モデルに正しいモデルを渡すことを可能にする署名を使用する必要があると思う。 – tvanfosson

関連する問題