4

我是 asp.net mvc 的新手。我创建了一个 asp.net mvc4 空应用程序并向其添加了一个实体模型。我有一个布局页面,我想显示菜单类别、页眉、页脚 vb。但是如何将包含另一个实体对象(最后的帖子、类别、标签)的数据发送到布局页面?谢谢

4

1 回答 1

12

如果您想将数据(我假设来自数据库)传递到布局视图,您将面临这样一个场景,即您有数据传递到应用程序中的每个页面。所以我要做的是创建一个基本控制器,所有控制器都将从中继承:

public class BaseController : Controller
{
   public LayoutModel model;

   public BaseController()
   {
       // Here you will use some business logic to populate your Layout Model
       // You might also consider placing this model into the cache to prevent constant fetching of data from the database on each page request.
       model = _service.Populate();
       ViewBag.LayoutModel = model;
   }
}

如您所见,我使用基本控制器的构造函数来获取布局视图所需的数据。我创建了一个名为 model 的属性,并使用了一些名为 Populate 的业务逻辑方法(您需要自己编写)来填充模型变量。然后我将模型放入 ViewBag。

完成此设置后,我在解决方案中制作的每个控制器都需要从基本控制器继承:

public class HomeController : BaseController
{
   // Controller code here...
}

这意味着每个控制器现在都可以从基本控制器访问模型属性。

从这里您可以像这样在每个视图上使用 ViewBag.LayoutModel (在视图顶部声明一个局部变量并将其转换为基础类型):

@{
   LayoutModel MenuModel = ViewBag.LayoutModel;
}

然后像这样使用它:

@MenuModel.SomeProperty

这只是其中一种方法,但还有其他更少/更复杂的方法。你需要自己做一些研究,看看哪种技术最适合你……

于 2013-06-26T13:34:23.343 回答