如何将数据传递给ASP MVC中的共享视图?

时间:2014-04-28 10:52:53

标签: c# asp.net-mvc asp.net-mvc-4

我是ASP MVC的新手。我想要做的是将数据从数据库传递到应用程序的布局视图。

我的应用程序布局中有一个侧栏。它包含发布的最新新闻/通知的标题。我希望列表可用于应用程序的所有页面。侧栏在所有页面中都可见。我通过定义一个单独的独立视图(即没有控制器的视图)来实现这一点。

应用程序的所有页面都继承此视图。我在布局中使用了“RenderBody”方法。现在,由于布局没有任何控制器,我如何将数据从数据库传递到此共享的_Layout.cshtml页面。

2 个答案:

答案 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的部分视图来显示新闻项目。