我有一个 Razor Pages 应用程序。我有几个区域,每个区域都有自己的布局页面和菜单。
这非常简单,但我有几个页面需要与两个或更多区域共享。这些共享页面将传递一个参数,指示它们正在被哪个区域使用,我希望该页面的布局页面(菜单)是该区域的布局页面(理想情况下,URL 也会反映当前区域) .
我怎样才能实现这个目标?
我能想到的两个选择:
将共享页面放在Pages根文件夹中,然后使用AddPageRoute向共享页面添加多个路由,包括区域名称参数:
options.Conventions.AddPageRoute("/SharedPage", "{areaName}/alias1");
options.Conventions.AddPageRoute("/SharedPage", "{areaName}/alias2");
您可以根据
RouteData.Values["areaName"]
的值设置布局。不要使用 area
作为参数名称。就路由而言,它是一个保留字:
@{
if(RouteData.Values["areaName"] == "foo")
{
Layout = "_FooLayout";
}
if(RouteData.Values["areaName"] == "bar")
{
Layout = "_BarLayout";
}
}
您可以使用部分视图来实现这一点。创建一个局部视图并将其不放置在区域中(例如,公共文件夹或其他文件夹中)。
在区域文件夹中,创建一个仅渲染部分视图的主视图。