この記事は私にとって役に立ちました--以下に詳細を書いています-共有ディレクトリに、Webアプリケーション全体で使用されるすべてのファイル(マスターページや部分ビューなど)を置きます。 1 回 (部分ビューの場合)。共有コントローラーはありませんが、メニューなどを処理できる CommonController を作成できます。
ビューに表示する必要がある他のデータはわかりませんが、例を見ると、メニュー項目を ul タグに表示したいようです。
次のようなメニュー項目を表すクラスがあります。
public class MenuItem
{
public int MenuId { get; set; }
public string MenuName { get; set; }
}
ビューごとに常にビューモデルを作成します。ビューで必要なフィールドのみが表示されるため、これは優れています。ドメイン オブジェクトをビューに直接送信しないでください。
ビュー モデルは次のようになります。他にも多くのプロパティを含めることができますが、このデモでは meu アイテムのみを含めます。
public class MyViewModel
{
// This will contain the menu items that you want displayd in your view
public IEnumerable<MenuItem> MenuItems { get; set; }
}
アクションメソッド(CommonControllerのようなものと呼ばれるコントローラー内):
public ActionResult MyActionMethod
{
MyViewModel viewModel = new MyViewModel
{
// Here you do a database call to populate your menu items
// This GetAllMenuItems method returns a list of MenuItem objects
MenuItems = menuItemService.GetAllMenuItems()
};
return View(viewModel);
}
CommonController からデータを取得する部分ビューを作成します (上記のアクション メソッドで作成する必要があります)。MenuItems の各 MenuItem をループし、名前を li タグに表示します。
<ul>
@foreach (var item in Model.MenuItems)
{
<li>item.MenuName</li>
}
</ul>
これが役立つことを願っています。残りはあなたに任せて、残りを行い、より多くの記事を読んでください. あなたがやりたいことを説明する多くの情報がインターネット上にあります。これらの記事を読む時間に投資する必要があります。
これは、MVC で asp.net マスター ページ機能を実現するのに非常に役立つ記事です。つまり、すべてのページ [MVC のすべてのコントローラー/ビュー] に共通の機能が必要な場合は、この記事の手順に従う必要があります。以下で共有するこの記事では言及されていない問題に一度直面しました-すべてのビューで共有するために_layoutページで呼び出される部分ビューを作成するとき..書く必要があります- @{Html.RenderAction("BindMenu ", "Common");} _Layout ページ。私は初心者だったので、機能していない @Html.Partial("~/Views/Shared/_HeaderMenuPartial.cshtml", Model.MenuItemsList) のような部分ビューを呼び出そうとしていました。