1、創建BaseController並繼承Controller,在BaseController實現所需要調用公共方法。
我這里需要實現動態加載模板頁中數據,所以獲取母版頁數據的方法在Base中進行實現。
public abstract class BaseController : Controller { //進行依賴注入 private readonly ITNewsManager _tnewsManager; public BaseController(ITNewsManager tnewsService) { _tnewsManager = tnewsService; } public override void OnActionExecuting(ActionExecutingContext context) { // 獲取母版頁中數據賦值到ViewBag中 var controller = context.Controller as Controller; controller.ViewBag.HomePageData = a wait_tnewsManager.GetHomePageImgList().Result; } }
2、使用BaseController, 創建HomeController,並繼承BaseController,注意 base(tnewsManger)
public class HomeController : BaseController { private readonly ITNewsManager _tnewsManager; public HomeController(ITNewsAttachmentManager tnewsattManager) : base(tnewsManger) { } }
這樣再使用_Layout.cshtml中只需繼承Base就可以了。
3、如何在母版頁中進行賦值。由於我把母版頁需要動態加載的數據已經賦值到ViewBag.HomePageData 中,
所以在模板獲取是只需要獲取ViewBag.HomePageData中數據即可。一下是母版頁的HTML代碼
<div class="focus"> <ul class="focus_lists"> @if (@ViewBag.HomePageImg.Count > 0) { @foreach (var item in @ViewBag.HomePageImg) { <li><a href="javascript:void(0);"><img src="@item.BigImgUrl" alt="" /></a></li> } } else { <li><a href="javascript:void(0);"><img src="/images/banner.jpg" alt="banner" /></a></li> } </ul> <ul class="btns"></ul> </div>