私の_Layoutページで、私のサーバー上のJsonファイルから読み取る_Menusという部分ビューを使用してメニューを作成しようとしています。しかし、私はどのようにレイアウトページからモデルで部分的なビューを呼び出すかを理解することはできません。ここでAsp.net mvc4レイアウトでモデルの部分ビュー
は、共有フォルダ内にある_Menu.cshtmlページ、次のとおりです。ここで
@model IEnumerable<LangSite_151209.Models.MenuItem>
<div id="menu" class="largescreen_show smallscreen_hide" data-display="flex">
<div id="menu_left" class="menu_item">
@foreach (var mainMenuItem in Model)
{
// A bunch of stuff with the model that draws the menu
}
</div>
</div>
は、私は_layoutページでそれを呼び出す方法です:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Meta and script stuff -->
</head>
<body style="overflow:hidden;">
<div id="fg">
<div id="mobile_wrapper">
@Html.Partial("../Shared/_Menu")
</div>
</div>
<!-- A bunch of footer stuff that's irrelevant here -->
</html>
私は部分を返す試してみました次のように、Jsonファイルを開き、それを部分的なモデルのモデルに変換するSharedControllerを使用して表示します。
しかし、これを試してみると、Model: "オブジェクト参照がオブジェクトのインスタンスに設定されていません"でNullReferenceExceptionが発生します。モデルをそのように部分的に渡すことはできません。 Jsonオブジェクトを読み取るコードは正常な(部分的ではない)ページで同じコードを使用するとモデルが正しく渡され、スクリプトによってメニューが描画されるため、動作することが分かりました。
通常、モデルを部分的に渡す場合は、モデルをメインページに置き、そのように渡します。しかし、私は_Layoutにモデルを入れる方法を知らない。それは私がそれにどのようにすべきか?それとも良い方法がありますか?
@ Html.Partial( "viewName"、Model)のように、モデルを部分的に渡すことができます。問題は、モデルにすでに値が設定されていることです。 – Marko