うまくいけば私は自分自身を明確にしています。私は2つの共有レイアウトを持つ私のmvcプロジェクト内の領域を持っています _Application.cshtml(エリア用)_Layout.cshtml(エリア用以外)MVCのエリアと共有レイアウト
レポートとお気に入りはエリアコントローラ向けです。
デフォルトの名前空間コントローラ用の役割とユーザーです。
<li>@Html.ActionLink("Reports", "Reports", "Home")</li>
<li>@Html.ActionLink("Favourites", "Favourites", "Home")</li>
<li>@Html.ActionLink("System Roles", "Roles", "Support",new { Area = "" }, htmlAttributes: new { title = "System Roles" }) </li>
<li>@Html.ActionLink("Users", "Users", "Support", new { Area = "" }, htmlAttributes: new { title = "Users" })</li>
私は別の共有レイアウトを定義しています。レポートやお気に入りへのリンクはありません(まったく別のナビゲーションメニュー)。
デフォルトの名前空間コントローラからアクションを呼び出す機能を失うことなく、_Application共有レイアウトにロールとユーザーのレイアウトを割り当てることはできますか?
if (this.ViewContext.RouteData.DataTokens["Area"] != null) {
Layout = "~/Views/Shared/_Application.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
私はこれを試しましたが、定義されていないため、DataTokenはエリアルートを受信しません。
編集:申し訳ありませんが、私はトラブルの問題を記述したのです(あまりにも、同僚との...)
エリア「調達」:コントローラは:「ホーム」は、3つのビューインデックス、レポートとお気に入りを持っています。ナビゲーションメニュー(_Applicaiton.cshtml)は調達エリア専用です
エリア:コントローラー "サポート"には2つのビューロールとユーザーがあります。ナビゲーションメニュー(_Layout.cshtml)には、プロジェクトの他のエリアにナビゲートするリンクが含まれています。
上記のアクションリンクは、インデックスビューにあります。 ReportsまたはFavoritesをクリックすると、ApplicationName/Procurement/Home/ReportsまたはApplicationName/Procurement/Home/Favoritesに移動します。
をクリックすると、ApplicationName/Support/RolesまたはApplicationNameに移動します。/SupportUsers
ロールとユーザーのレイアウトをどのように定義したかによって、ナビゲーションメニューはProcurement Areaに固有のものを表示するのではなく、一般的なものに戻ります。
ナビゲーション・メニューの「ロール」または「ユーザー」をクリックして調達レイアウトに留まり、同じサポート・コントローラーを参照することが可能かどうかを調べたいと考えています。私は作成している各エリアのロールとユーザーページを作成する必要はありません。
「エリア」の小文字は正しいですか。しかし、私はこのアプローチが私にとってはうまくいくとは思わない。私はActionLinkでAreaを定義しません。これは、デフォルトの名前空間コントローラ内のアクションであり、キーが決して設定されないようにするためです... – foop
本質的に、私はRoleとUserのビューとアクションをプロジェクト。しかし、私はユーザーに再利用されたビューやアクションのための特定のエリアを残さないという経験を与えたいと思っています。 – foop
'_Application.cshtml'は' _Layout.cshtml'から継承していますか? –