Asp.net mvc 3 关于如何在MVC3中实现特定功能的建议
我有一个MVC3应用程序,基于VS2010的默认布局,在下图中我将其更改为类似 子菜单区域在_layout.cshtml中定义为Asp.net mvc 3 关于如何在MVC3中实现特定功能的建议,asp.net-mvc-3,asp.net-mvc-routing,asp.net-mvc-3-areas,Asp.net Mvc 3,Asp.net Mvc Routing,Asp.net Mvc 3 Areas,我有一个MVC3应用程序,基于VS2010的默认布局,在下图中我将其更改为类似 子菜单区域在_layout.cshtml中定义为 <div id="sidebar"> <h3>Entities</h3> <p></p> <ul> @Html.Partial("_EntitiesMenu") </ul
<div id="sidebar">
<h3>Entities</h3>
<p></p>
<ul>
@Html.Partial("_EntitiesMenu")
</ul>
</div>
<section id="main">
@RenderBody()
</section>
从菜单开始的所有“我的实体”控制器都在“控制器”和“视图”中的“视图”中定义为标准
我需要的是改变应用程序使用如下布局
<section id="main">
<div>
@RenderBody()
</div>
<div>
@RenderSection("EntityCRUD", false)
</div>
</section>
当用户单击实体时,应用程序应导航到myapp/Entities/或myapp/Entities/索引,并应在主工作区中打开如下所示的视图
然后,当用户单击右侧子菜单时,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>
//此处应成为新的主体区域,以加载从其他控制器调用的所有视图
//类似于@RenderBody(),但这不起作用
实体
@Html.Partial(“实体菜单”)
我不想对实体控制器或视图进行更改(或者在绝对必要的情况下进行最小更改,因为它们太多了)。我是否可以在实体范围下以某种方式将该区域指定为主体?如果用户单击顶部主页/About,它将从_layout.cshtml“卸载”实体视图
我不确定我的问题是否很清楚,但我希望有人能理解我的意图
谢谢你你说的是@RenderSection吗我用以下方法(某种程度上)完成了一些接近我需要的东西:
<section id="main">
<div>
@RenderBody()
</div>
<div>
@RenderSection("EntityCRUD", false)
</div>
</section>
@section EntityCRUD
{
@Html.Partial("_PanelEntitiesMenu")
....
}
不完全是我想要的,但这是我迄今为止发现的最好的。不完全是,因为@RenderSection只能在主视图中,我想在Entities Index视图中使用它。我设法“破解”它(某种程度上)以获得接近我需要的东西,但它需要更改所有视图,首先在@section{..}中“包装”视图代码然后将实体菜单视图作为部分加载。这不是一个好的解决方案,因为它涉及更改大量文件,并且设计不干净。还有其他想法吗?
<div id="sidebar">
<h3>Entities</h3>
<p></p>
<ul>
@Html.Partial("_EntitiesMenu")
</ul>
</div>
@section EntityCRUD
{
@Html.Partial("_PanelEntitiesMenu")
//... original view code
}
@section EntityCRUD
{
@Html.Partial("_PanelEntitiesMenu")
....
}