asp.net mvc Areas 母版页动态获取数据进行渲染

时间:2024-07-15 23:05:50

经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要

进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢

这里描述的是对于多个页面统一的数据部分,即多个页面中均保持一致且与各个页面无其他关系的页面,

虽然我们可以通过razor使用C#语言来获取数据并写入页面中,但这就违背我们view中尽可能不处理数据的意愿了

所以给出的解决方案是,通过ViewBag将需要的数据写入页面中,将读取数据的操作提取到baseController中,

然后其他的控制的继承我们自定义的控制器,baseController需要继承Controller,同时需要导入using System.Web.Mvc;

代码如下

baseController.cs

 public class BaseController: Controller
{
public BaseController()
{
//传入我们需要的数据
ViewBag.Clubs = "测试数据" }
}

继承自定义的BaseController

public class HomeController : BaseController
{
public ActionResult Index()
{
return View();
}
}

将页面的公共部分提取为_main.cshtml保存到Shared目录中

在母版页中写上@ViewBag.Clubs或其他需要的数据,

然后添加@RenderBody()等内容渲染页面的其他部分

至此还剩最后一步,在对应的view页面中添加对母版页的引用

@{
Layout = "~/Areas/student/Views/Shared/_main.cshtml";
}

2017.12.9 20:16

记录下来留待后查,同时方便他人