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>
Asp.netCore BaseController的使用及动态加载母版页赋值
原文地址:https://www.cnblogs.com/xinbaba/p/10341722.html