2011-02-03 4 views
0

すべてがうまく動作しますが、モデル 'MySite.Models.Cars'を使用して厳密に型指定されたビューを返す新しいコントローラを追加した後、 SiteLayout.cshtmlでHtml.Partial( "LogOnPartial")を呼び出すときにエラーが発生します。私はこのような新しいビューを呼び出します。非常にイライラテンプレートMVC 3プロジェクトでHtml.Partial( "LogOnPartial")を呼び出すときのエラー

The model item passed into the dictionary is of type 'MySite.Models.Cars', but this dictionary requires a model item of type 'MySite.Models.LogOnModel'.

return View(db.Cars.FirstOrDefault()); 

これは誤りです。私はモデルを提供せずに新しいビューを使用すると再び動作します。

私はMVC 2/ASPXで全く同じ条件を設定していて、うまくいきました。私はこれがMVC 2/MVC 3かASPX/Razorの問題かどうかはわかりません。実際、それは深夜の問題かもしれません...

返信には非常に感謝しています。

EDIT:

@model MySite.Models.Cars 

答えて

2

デフォルトでは、テンプレートによって作成された_LogOnModel.cshtml部分は強く型付けされておらず、モデルを必要としません。モデルを必要とするように変更した場合は、このモデルを呼び出すときにこのモデルを渡す必要があります。

@Html.Partial("_LogOnPartial", SomeLogonModelInstance) 
+0

ああ...私は誤ってそれを強く型付けしました。それは本当に遅くなっています。あなたは答えを得て、いくつかの追加ポイントを使うことができるように見えます;) – Malako

0

郵便番号:LogOnPartial.cshtmlから

最初の行はIndex.cshtmlから(新しいビューを)

@model MySite.Models.LogOnModel 

最初の行(私はアンダースコアを削除)

あなたのビューから。 (atleast最初の数行)。あなたのビューは特定のタイプ(LogOnModel)のモデルを期待していますが、別のタイプ(Cars)を渡しています。

このLogOnModelは、ビューの最初の行で参照されるはずです。エラーが表示された場合は、先に進んで修正してください。ここにはビューのコピーが添付されていなければ、お手伝いします。

+0

編集された質問 – Malako

0

遅くても問題はあるようです。パーシャルのタイプは何ですか?エラーが読んだところから、部分モデルがLogOnのモデルを探しているときに、モデルタイプのCarsを渡しているかのように見えます。これは、Partialを作成したときに自動的に作成されたものでした。

+0

LateNightIssue == true。私はその日の早い段階で部分的な見方を乱し、何らかの理由で強く型付けしました。私はビューに追加したコードを削除したが、最初の行は忘れてしまった。 – Malako

0

カスタムメンバーシップと部分ビュー(_LogOnPartial)を_Layoutページで使用しているようです。デフォルトで_Layoutページにはコントローラーがないので、必要がない場合はモデルを使用しないでください。あなたのLogOnModelを_Layoutページから外し、EOのデフォルトメンバーシップアプローチと同様に、LogOffとLogOn ActionLiknsを_LogOnPartialに残します。

関連する問題