我是ASP MVC的新手。我想要做的是将数据从数据库传递到应用程序的布局视图。
我的应用程序布局中有一个侧栏。它包含发布的最新新闻/通知的标题。我希望列表可用于应用程序的所有页面。侧栏在所有页面中都可见。我通过定义一个单独的独立视图(即没有控制器的视图)来实现这一点。
应用程序的所有页面都继承此视图。我在布局中使用了“RenderBody”方法。现在,由于布局没有任何控制器,我如何将数据从数据库传递到此共享的_Layout.cshtml页面。
答案 0 :(得分:2)
您可以编写控制器基类来处理这样的情况。然后在布局中使用Html.Action来请求新闻数据。这样,您可以通过覆盖操作来扩展或更改每个控制器中的通知。
public class BaseController : Controller
{
public virtual ActionResult News()
{
return PartialView("_MyPartial");
}
}
public class HomeController : BaseController
{
public ActionResult Index()
{
return View();
}
}
在你的_Layout.cshtml中的某个地方:
@Html.Action("News")
话虽如此,我认为编写独立控制器进行共享操作没有任何问题,即。 SharedController。
答案 1 :(得分:1)
在你的_Layout中你可以使用类似的东西:
<div id="sidebar">@Html.Action("Index", "Sidebar")</div>
在(新)SidebarController中:
public ActionResult Index()
{
var data = db.News.Get(); // Get database data
return PartialView("_Sidebar", data);
}
在Shared文件夹中调用_Sidebar的部分视图来显示新闻项目。