我有一个 MVC3 应用程序,基于 VS 2010 的默认布局,我将其更改为如下图所示
子菜单区域在 _layout.cshtml 中定义为
<div id="sidebar">
<h3>Entities</h3>
<p></p>
<ul>
@Html.Partial("_EntitiesMenu")
</ul>
</div>
<section id="main">
@RenderBody()
</section>
_EntitiesMenu 包含以下条目
<li>@Html.ActionLink("Addresses", "Index", "Address")</li>
<li>@Html.ActionLink("Applications", "Index", "Application")</li>
我有一个 MapRoute 定义为
routes.MapRoute("Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
{ controller = "Home", action = "Index", id = UrlParameter.Optional });
我从菜单开始的所有实体控制器都在控制器中定义标准,在视图中定义视图。
我需要的是更改应用程序以使用如下布局
当用户单击实体时,应用程序应该导航到 myapp/entities/ 或 myapp/entities/index,它应该在主工作区打开一个视图,如下所示
然后当用户点击右侧子菜单时,url 应该看起来像 myapp/entities/entity1/index、myapp/entities/entity1/edit/1 等(就像现在一样,但是“在”实体页面下。
我定义了实体控制器,如
public class EntitiesController : Controller
{
public ActionResult Index()
{ return View();}
}
它的视图看起来像
<div id="workarea">
// here should became new Body region, to load all views called from the other controllers
// something like @RenderBody(), but this don't works
</div>
<div id="sidebar">
<h3>Entities</h3>
<ul>
@Html.Partial("_EntitiesMenu")
</ul>
</div>
我不想对实体控制器或视图进行更改(如果绝对必要,也可以进行最小的更改,因为它们有很多)。我可以在实体范围内以某种方式将该区域指定为主体吗?如果用户点击顶部主页/关于,它会从_layout.cshtml“卸载”实体视图?
不知道我的问题是否很清楚,但我希望有人能理解我所追求的。
谢谢