我在_Layout.cshtml
中有一个侧边栏,我想在其中动态显示另一个视图/模型中的项目。我不太擅长数据库,所以我需要一些帮助。
_Layout.cshtml
中的补充工具栏:
<div id="sidebar">
@if (IsSectionDefined("SideBar")) {
@RenderSection("SideBar", required: false)
} else {
*Here is where I want the table to be displayed*
}
我想在侧边栏中显示的视图位于~/Views/Sidebarpics/index.cshtml
。
如果您需要更多代码才能帮我问一下!
由于
已解决,我的解决方案:
我复制了SidebarPics / index并将其命名为index2。
_Layout Sidebar:
<div id="sidebar">
@if (IsSectionDefined("SideBar"))
{
@RenderSection("SideBar", required: false)
}
else
{
@Html.Action("Index2", "SidebarPics")
}
HomeController中:
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
}
SidebarPicsController:
public ActionResult Index()
{
return View(db.SidebarPics.ToList());
}
[ChildActionOnly]
public ActionResult Index2()
{
return PartialView(db.SidebarPics.ToList());
}
这可能不是最好的解决方案,但它对我来说很好用,这样很容易对它们进行不同的设计。
答案 0 :(得分:0)
使用@ Html.Partial或@ Html.Action,具体取决于您是否需要该视图来通过控制器。
如果您只想加载cshtml而无需使用控制器操作,请将其呈现为partial view:
@Html.Partial("~/Views/Sidebarpics/index.cshtml")
如果您需要通过控制器操作处理视图,请将其呈现为child action:
@Html.Action("Index", "SidebarPics")
编辑:添加子控制器示例
编辑2:我意识到我已经翻转了控制器和动作参数。应该首先采取行动。
编辑3:更新以更改每条评论的部分索引名称。
相关布局页面部分:
<div id="sidebar">
@if (IsSectionDefined("SideBar")) {
@RenderSection("SideBar", required: false)
} else {
@Html.Action("PartialIndex", "SidebarPics")
}
</div>
家庭控制器:
public class HomeController
{
[HttpGet]
public ActionResult Index()
{
return View();
}
}
SidebarPics控制器:
public class SidebarPicsController
{
public ActionResult Index()
{
return View(db.SidebarPics.ToList());
}
[ChildActionOnly]
public ActionResult PartialIndex()
{
return PartialView("Index", db.SidebarPics.ToList());
}
}
我相信也可以省略ChildActionOnly属性,但之后你会有一个只返回局部视图的动作。
答案 1 :(得分:0)
您只需要在条件
内使用@Html.Partial
来调用部分视图
<div id="sidebar">
@if (IsSectionDefined("SideBar"))
{
@RenderSection("SideBar", required: false)
}
else
{
@Html.Partial("~/Views/Sidebarpics/index.cshtml")
}
</div>
有关部分观看次数的更多信息:http://mvc4beginner.com/Tutorial/MVC-Partial-Views.html