【问题标题】:Data driven asp.net mvc layout数据驱动的asp.net mvc布局
【发布时间】:2014-04-29 18:32:22
【问题描述】:

我有一个控制器动作:

 public ActionResult Sub(int id)
    {
      SubPage_Table subpage_table = db.SubPage_Table.Single(s => s.PageID == id);
        if (subpage_table == null)
        {
            return HttpNotFound();
        }
        return View(subpage_table);
    }

还有一个观点:

@model Name.Models.DB.SubPage_Table
@Html.Raw(HttpUtility.HtmlDecode(Model.PageContent))  

但我的布局需要强类型:

@model IEnumerable<Name.Models.DB.SubPage_Table> 
          @foreach (var item in Model)
          {@: <li> @Html.ActionLink((item.PageTitle), "Sub", new { id = item.PageID })</li>

}

如何用数据填充我的视图和布局?

【问题讨论】:

  • 您会假设您在应用程序中使用该布局创建的每个页面都需要IEnumerable&lt;Name.Models.DB.SubPage_Table&gt;?这似乎很不现实。
  • 嗯,我想...除非您知道如何创建链接,例如 @Html.ActionLink((item.PageTitle), "Sub", new { id = item.PageID } 不使用 Ienumerable ? 因为现在我使用 foreach 循环创建
  • 所以你真正的问题听起来像如何为我的布局检索数据
  • 嗯,Lokoks 喜欢你是对的。我试过 List subpage_table =db.SubPage_Table.Where(s => s.PageID == id).ToList();在控制器中,但最终由于新的 { id = item.PageID } Pages 我只显示了一个链接而不是全部。 (只显示当前一个,所以如果我转到子页面“Test”,那么在菜单中只显示“Test”,而不是“test2”,“test3”等......
  • 我已经更新了你的问题来谈谈相关信息。

标签: c# asp.net-mvc razor asp.net-mvc-views asp.net-mvc-layout


【解决方案1】:

以下是更好的选择:

使用您的数据驱动信息创建局部视图

public LayoutController
{
  public ActionResult CreateMenu()
  {
    var model = db.getmenudata();

    return PartialView(model);
  }
}

然后您的 Layout/Createmenu.cshtml 只创建数据驱动的 html。

在您的 _Layout.cshtml 中:

<html>
... etc

@Html.RenderAction("Createmenu", "layout");

... etc

@RenderBody();


... etc
</html>

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多