asp.net-mvc-3 – .NET MVC 3以编程方式设置布局
发布时间:2020-12-16 03:41:32 所属栏目:asp.Net 来源:网络整理
导读:在.NET Razor Web应用程序中,我正在尝试以编程方式设置布局.我不能使用_ViewStart.cshtml,也不要在每个页面上设置@ {Layout =“…”}.这就是我想出的: 基础WebViewPage类: public abstract class SitePageT : System.Web.Mvc.WebViewPageT{ private object
在.NET Razor Web应用程序中,我正在尝试以编程方式设置布局.我不能使用_ViewStart.cshtml,也不要在每个页面上设置@ {Layout =“…”}.这就是我想出的:
基础WebViewPage类: public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T> { private object _layout; public new dynamic Layout { get { return _layout; } } public override void InitHelpers() { base.InitHelpers(); _layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml"; } } 在应用程序web.config中,我指定所有视图以使用此基页.但布局似乎从未使用过.这可能有什么问题? 解决方法
WebViewPage类继承自WebPageBase,该WebPageBase具有名为Layout的属性,如:
public override string Layout { get; set; } 您可以覆盖Layout属性,或更改_layout逻辑以实现您的目的.例如: public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T> { // set this modifier as protected,to make it accessible from view-pages protected string _layout{ get { return base.Layout; } set { base.Layout = value; } } public override void InitHelpers() { base.InitHelpers(); _layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml"; } } 和/或在视图页面中,您也可以设置它: @{ _layout = "_Your_Special_Layout.cshtml"; } 更新:使用一个标志来避免在多次分配_layout时堆栈溢出: public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T> { public bool LayoutAssigned { get { return (ViewBag.LayoutAssigned == true); } set { ViewBag.LayoutAssigned = value; } } // set this modifier as protected,to make it accessible from view-pages protected string _layout{ get { return base.Layout; } set { base.Layout = value; } } public override void InitHelpers() { base.InitHelpers(); if(!LayoutAssigned) { _layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml"; LayoutAssigned = true; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何使用Windsor将依赖项注入到ActionFilte
- asp.net-mvc – ASP.Net MVC捆绑和分类
- asp.net – 你预编译你的网站,为什么不为什么不呢?
- asp.net – 来自CodeBehind的GridView在C#Paging中无法正常
- asp.net-core – 在Microsoft.AspNet.Http.HttpContext中的
- asp.net-core-1.0 – ASP.NET Core 1.0中的package.json
- 更新了ASP.NET 3.5到4.0 – > Sys.WebForms.PageRequestMan
- asp.net-mvc – 为什么应该使用HTTP POST或DELETE而不是GET
- asp.net – 需要安装Dnx Runtime软件包 有关详细信息,请参阅
- asp.net – CalendarExtender定位问题
推荐文章
站长推荐
热点阅读