经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要
进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢
这里描述的是对于多个页面统一的数据部分,即多个页面中均保持一致且与各个页面无其他关系的页面,
虽然我们可以通过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
记录下来留待后查,同时方便他人
时间: 2024-10-07 19:05:37