Razor を使用して ASP.Net MVC アプリケーションを作成しています。
HomeController とそのためのいくつかのビューがあるとします。
1. View1
2. View2
3. View3
このすべてのビューは、次のような共通_MyLayout
ファイル
を使用します。
リンクがクリックされると、メソッドによってビューがレンダリングされますRenderBody()
。各ビューは厳密に型指定されています。独自のモデルが必要です。
特別なモデルを _MyLayout ビューに追加することを決定するまで、すべて問題ありませんでした。
しかし、今私はエラーが発生します
The model item passed into the dictionary is of type 'TestUp.Models.UserModels.PendingTestsModel', but this dictionary requires a model item of type 'TestUp.Models.UserModels.UserNavigationModel'.
ここにコントローラーコードがあります
public ActionResult View1()
{
ModelForView1 model = new ModelForView1();
return View(model);
}
public ActionResult View2()
{
ModelForView2 model = new ModelForView2();
return View(model);
}
public ActionResult View3()
{
ModelForView3 model = new ModelForView3();
return View(model);
}
簡単に言えば、レイアウトビューがモデルを必要としない場合、ビューの特定のメソッドが呼び出され、モデルが作成され、ビューに渡され、すべて問題ありません。しかし、現在、レイアウトにはモデルも必要であるため、クラッシュします。
問題は、この問題をエレガントに解決するにはどうすればよいかということです。
望ましいワークフローは次のとおりです。
- View1 が要求されました
- このビューのコントローラーのメソッドが呼び出され、モデル インスタンスが作成され、ビューに渡されます
- レイアウト用の何らかのメソッドが呼び出され、レイアウト用のモデルが作成され、レイアウトに渡されます。
どういうわけかこのように物事を機能させることは可能ですか?
ありがとう。