Asp.net mvc Razor\u Layout.cshtml特定控制器的公共部分

Asp.net mvc Razor\u Layout.cshtml特定控制器的公共部分,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我正在开发我的第一个ASP.NET MVC应用程序,我想完成的是在每个页面的一个部分中显示一个常用列表。在我的例子中,我有一个_Layout.cshtml,它有一个页眉、页脚、主区域和一个左侧边栏,在这里我希望始终显示从数据库检索到的项目列表 如果我这样做: @RenderSection("BestSellingFlavors") 在_Layout.cshtml中,我可以让任何特定的视图在那里显示其“BestSellingFlavors”部分,但在我的例子中,这是从数据库检索到的标准列表-我希

我正在开发我的第一个ASP.NET MVC应用程序,我想完成的是在每个页面的一个部分中显示一个常用列表。在我的例子中,我有一个_Layout.cshtml,它有一个页眉、页脚、主区域和一个左侧边栏,在这里我希望始终显示从数据库检索到的项目列表

如果我这样做:

@RenderSection("BestSellingFlavors")
在_Layout.cshtml中,我可以让任何特定的视图在那里显示其“BestSellingFlavors”部分,但在我的例子中,这是从数据库检索到的标准列表-我希望无论用户正在查看哪个页面,它都会显示在侧边栏上。有道理吗

目前,我有一个控制器/模型/视图,它提供了我们库存中最畅销口味的视图,但我不确定如何检索和显示这些信息,而不在每个控制器/视图中重复一堆代码

一个想法是使用BaseController来检索畅销书。大概是这样的:

public abstract class BaseController : Controller
{
   public PartialViewResult BestSellers()
   {
      try
      {
         var db = IceCreamDBData();
         var all = db.Sales.AsEnumerable();
         var bestsellers = from a in all select new {a.Name, a.UnitsSold};
         return PartialView("BestSellers", bestsellers);
      }
      catch (Exception)
      {
          throw;
      }
   }
}
@model HometownIceCream.Models.BestSellersViewModel
<h3>Best Sellers</h3>
@foreach (var item in Model.Entries)
{
   <div>@item.Name</div>
}
public abstract class BaseController : Controller
{
   public PartialViewResult BestSellers()
   {
      try
      {
         var db = IceCreamDBData();
         var all = db.Sales.AsEnumerable();
         var bestsellers = from a in all select new {a.Name, a.UnitsSold};
         BestSellersViewModel mod = new BestSellersViewModel() {Entries = bestsellers};
         return PartialView("_BestSellersPartial", mod);
      }
      catch (Exception)
      {
          throw;
      }
   }
}
我的各种控制器将继承BaseController。 但是,我一直在想,这实际上是如何被调用的,以及视图代码驻留在哪里,它将
@foreach
数据集合并显示它。这让我觉得我在错误地处理问题。我应该如何解决这个问题


更新: J.W.的解决方案和链接让我开始了,现在我(大概)走上了正确的轨道

在my_Layout.cshtml中,我创建了一个div:

<div id="BestSellers">
   @Html.Action("BestSellers")
</div>

这似乎很有效。我需要为我的控制器做的唯一一件事就是让它们继承
BaseController
,而不是
Controller
,我想这是您需要的。您可以使用此方法创建一个共享部分,如菜单。

感谢关于此的链接和指导,J.W.-我最终使用了Html.a(如果您感兴趣,请参阅我的问题的更新),它运行得非常好。