0

特定のコントローラーが使用され、特定のモデルが存在する場合にのみ表示したいサブメニューがあります。パーシャルを作成して_Layout.cshtmlでレンダリングしようとしましたが、渡されたモデルアイテムがタイプ...であるというエラーが表示されますが、このディクショナリにはタイプ...のアイテムが必要です。

適切なタイプのモデルが渡されるように、コントローラーの各ビューにメニューを配置することもできますが、それは柔軟性の低い方法のようです。

現在、_submenupartialでモデルがnullかどうかを確認しています

@if(Model != null)

ただし、これにより、任意のタイプのモデルが通過し、間違ったタイプの場合はエラーが発生します。

@ Html.Partialは、特定のコントローラーが使用されている場合にのみ実行されるように指定するのが最善の方法だと思いました。または、ビューに渡されたモデルが正しくない場合にコードが実行されないようにモデルタイプを確認する方法はありますか?

4

1 に答える 1

1

モデルを動的にする必要があるようです(詳細については、このWebサイトを確認してください)。その後、モデルのタイプを確認し、それに応じて動作することができます。

@model dynamic

@{
    ViewBag.Title = "IndexNotStonglyTyped";
}

<h2>Index Not Stongly Typed</h2>

<p>
@if(Model is MyType) {
   <span>got myType!</span>
}

</p>

注:上記のWebサイトから取得した元の例。

于 2012-12-14T18:10:39.640 に答える