こんにちは。
Windows10でASP.NETのアプリケーションを開発しています。
Visual Studio 2017 Communityを使っています。
###前提・実現したいこと
部分ビューを使う場合の設計方針(ファイル構成)について教えてください。
ASP.NET MVCでは、Model-View-Controllerの構成でプロジェクトを作ります。
現在のプロジェクトは、すでに動いているもので、この大原則に微妙に当てはまらない構造になっています。
いま困っているのは、部分ビューのなかで条件分岐するときに、あるいは条件分岐で部分ビューを表示するときに、その条件分岐をどのControllerやViewに書けばよいのか、ということです。
ファイルの構造は、
Model/User.cs
View/Share/_Main.cshtml
View/Share/_LeftMenu_Admin.cshtml
View/Share/_LeftMenu_User.cshtml
Controller/UserController.cs
です。
これで、ログインしたときに_Main.cshtmlのなかで、下記のようにメニューを分岐しています。Adminのときは_LeftMenu_Admin.cshtmlを使い、一般ユーザーの場合は、_LeftMenu_User.cshtmlを使っています。
管理者のほうが、メニュー項目が少し多いです。
大部分は同じコードです。
Q1)この場合、そもそもメニューのファイルを_LeftMenu.cshtmlのひとつに統合して、条件分岐をそのなかのメニュー(ユーザー管理)の表示部分で行えば、もっとすっきりするのではないか、と考えました。これはありでしょうか、なしでしょうか?
Q2)下記のコードでは、_Main.cshtmlのなかで条件分岐をしていますが、そういうことはControllerで行うべきではないのでしょうか?
Q3)現在のプロジェクトには、_MainController.csも、_LeftMenu_AdminContreller.csも、_LeftMenu_UserContreller.csも存在しないのですが、MVCでもControllerはなくてもよいのでしょうか? 部分ビューだから不要なのでしょうか?
Q4)部分ビューの場合のControllerは、書くとしたらどこに書きますか?
Controller/Share/_MainController.cs?
Controller/_MainController.cs?
###該当のソースコード
うまく必要なものを抜き出せているでしょうか・・・?
C#
1Model/User.cs 2 public partial class User 3 { 4 public int Id { get; set; } 5 public string UserId { get; set; } 6 public string Password { get; set; } 7 public bool IsAdmin { get; set; } 8 } 9 10View/Share/_Main.cshtml 11 if (user.IsAdmin) 12 { 13 @Html.Partial("_LeftMenu_Admin"); 14 } 15 else 16 { @Html.Partial("_LeftMenu_User"); }
###補足情報(言語/FW/ツール等のバージョンなど)
Microsoft Visual Studio Community 2017
Version 15.0.26228.9 D15RTWSVC
Microsoft .NET Framework
Version 4.6.01586
です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/28 02:04
2017/04/28 04:41
2017/04/28 04:48