在_Layout侧边栏中动态显示表格

时间:2015-09-23 15:41:41

标签: html asp.net-mvc razor dynamic sidebar

我在_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());
    }

这可能不是最好的解决方案,但它对我来说很好用,这样很容易对它们进行不同的设计。

2 个答案:

答案 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