2010-11-27 7 views
3

です。わかりましたが、正しい方法で解決することができないというエラーがあります。辞書に渡されたモデル項目は、タイプが

私は呼んでいるマスターページから、マスターページを持っている:

<% Html.RenderPartial("Tags"); %> 

タグは次のようになり、強く型付けされた図である。

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

私はこのようなPartialViewを返します結果が正しいタイプである

return View("Tags", result); 

List<CategoryCount> 

誤差はこれです:

辞書に渡さモデル項目タイプ 'System.Collections.Generic.List 1[JegManglerEn.Item]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [JegManglerEn.Controllers.CategoryCount]' です。

ので、セットアップはこれです:

マスターページはJegManglerEn.Itemのコレクションをとり、またJegManglerEn.Controllers.CategoryCountのコレクションをとるPartialViewをロードしようとするビューをロードします...しかしに失敗しましたそうする。

は、私はそれはそれは素晴らしい作品だRenderActionし、私はそれを変更した場合のでれるrenderPartial方法とは何かを持って知っています。

答えがありましたら、私はMVCのソースまたはスタートアップリフレクターを見てスキップします。

ありがとうございます!

答えて

5

ViewUserControl<IEnumerable<JegManglerEn.Controllers.CategoryCount>> 

あなたがHtml.RenderPartialの単一パラメータのオーバーロードを呼び出すと、あなたは暗黙的部分まで、親ビューのモデル全体を渡しています。ビューで期待されるモデルタイプが一致しないため、これは機能しません。

コンテキストでRenderPartialを動作させる最も簡単な方法は、タグとページモデルデータの両方を含む複合モデルタイプを作成し、親モデルの一部をパーシャルに渡すオーバーロードを呼び出します。

それはそれが簡単にあなたのコントローラ内で重複したコードを回避することができるよう言われて、私は(もちろん、あなたがのために同じように、タグのデータをロードしていると仮定すると、RenderActionが最も可能性が高いここに行くための方法だと思うこと
Html.RenderPartial("Tags", Model.Tags); 

問題のマスターページから継承したすべてのページ)。

0

変更

ViewUserControl<List<JegManglerEn.Controllers.CategoryCount>> 
関連する問題