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