大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 如何使用ASP.NET MVC中的基本控制器创建一个强类型的母版页,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
题
子控制器应如何确保将母版页的数据传递给视图,而不设置与主页本身相关的ViewModel的属性?
我的主页面将显示一些按钮,这些按钮是在XML文件中确定的,因此我正在填充的Buttons类。
MasterPage ViewModel代码段
using System.Collections.Generic; namespace Site1.Models { public class MasterViewModel { public List<Button> Buttons{set; get;} } }
查看ViewModel
namespace Site1.Models { public class View1ViewModel : MasterViewModel { public SomeDataClass SomeData { get; set; } } }
基控制器
using System.Collections.Generic; using System.Web.Mvc; using Site1.Models; namespace Site1.Controllers { public abstract class BaseController : Controller { protected MasterViewModel model = new MasterViewModel(); public BaseController() { model.Buttons = new List<Button>(); //populate the button classes (doesn't matter how) PopulateButtons(model.Buttons); } } }
视图的控制器:
using System.Web.Mvc; namespace Site1.Controllers { public class View1Controller : BaseController { public ActionResult Index() { Models.View1ViewModel viewModel = new Models.View1ViewModel(); SomeDataClass viewData = new SomeDataClass() //populate data class (doesn't matter how) PopulateDataClass(viewData); viewModel.SomeData = viewData; //I WANT TO ELIMINATE THE FOLLOWING LINE! viewModel.Buttons = model.Buttons; return View("Index",viewModel); } } }
母版页继承了System.Web.Mvc.ViewMasterPage< Site1.Models.MasterViewModel> ;. 视图继承了System.Web.Mvc.ViewMasterPage< Site1.Models.View1ViewModel> ;.
动作过滤器属性获取控制器的ViewModel,并将其传递给控制器的SetModel函数:
using System.Web.Mvc; using Site1.Controllers; namespace Site1.Models { public class MasterAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); MasterViewModel viewModel = (MasterViewModel)((ViewResultBase)filterContext.Result).ViewData.Model; BaseController controller = (BaseController)filterContext.Controller; controller.SetModel(viewModel); } } }
此功能添加到BaseController中:
public void SetModel(MasterViewModel childViewModel) { childViewModel.Buttons = model.Buttons; }
以上是大佬教程为你收集整理的asp.net-mvc – 如何使用ASP.NET MVC中的基本控制器创建一个强类型的母版页全部内容,希望文章能够帮你解决asp.net-mvc – 如何使用ASP.NET MVC中的基本控制器创建一个强类型的母版页所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。