创建LayoutInjecter类继承:ActionFilterAttribute
using System.Web.Mvc; public class LayoutInjecter : ActionFilterAttribute { private readonly string _masterName; public LayoutInjecter(string masterName) { _masterName = masterName; } public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); if (filterContext.HttpContext.Request.IsAjaxRequest()) { } else { if (filterContext.Result.GetType() == typeof(RedirectToRouteResult)) { } else if(filterContext.Result.GetType() == typeof(ViewResult)) { ViewResult result = (ViewResult)filterContext.Result; result.MasterName = _masterName; } } } }
在对应的Controller里面就可以加上这个属性并传入参数实现动态模板。
[LayoutInjecter("~/Views/Shared/_Layout.cshtml")] public class SampleController : baseController { }