也玩MVC3.“.NET研究”0 Razor自定义视图引擎来修改默认的Views目录结构

刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。

MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。通过reflector找到视图引擎的构造接口类VirtualPathProviderViewEngine

在MVC2.0中,自定义自己的视图引擎,继承它即可,但在3.0中,上海企业网站制作我发现继承它会缺少一个函数。再reflector获得了BuildManagerViewEngine的抽象类,因为RazorViewEngine继承的是该抽象类。

所以最直接还是在自己的视图引擎中继承它。

上海闵行企业网站设计与制作>public class myViewEngine : BuildManagerViewEngine
    {
        // Fields
        internal static readonly string ViewStartFileName = "_ViewStart";
        // Methods
        public myViewEngine()
            : this(null)
        {
        }
        public myViewEngine(IViewPageActivator viewPageActivator)
            : base(viewPageActivator)
        {
            base.AreaViewLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/{1}/{0}.vbhtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.vbhtml" };
            base.AreaMasterLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/{1}/{0}.vbhtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.vbhtml" };
            base.AreaPartialViewLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/{1}/{0}.vbhtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.vbhtml" };
            base.ViewLocationFormats = new string[] { "~/T/{1}/{0}.cshtml",  "~/T/Shared/{0}.cshtml" };
           上海徐汇企业网站制作 base.MasterLocationFormats = new string[] { "~/T/{1}/{0}.cshtml",  "~/T/Shared/{0}.cshtml" };
            base.PartialViewLocationFormats = new string[] { "~/T/{1}/{0}.cshtml",  "~/T/Shared/{0}.cshtml" };
            base.FileExtensions = new string[] { "cshtml", "vbhtml" };
        }
        protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
        {
            string layoutPath = null;
            bool runViewStartPages = false;
            IEnumerable<string> fileExtensions = base.FileExtensions;
            return new RazorView(controllerContext, partialPath, layoutPath, runViewStartPages, fileExtensions, base.ViewPageActivator);
        }
        protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
        {
            string layoutPath = masterPath;
            bool runViewStartPages = true;
            IEnumerable<string> fileExtensions = base.FileExtensions;
            return new RazorView(controllerContext, viewPath, layoutPath, runViewStartPages, fileExtensions, base.ViewPageActivator);
        }
    }

上面是原Razor视图引擎的构造类,我只是拷贝下来修改修改我希望的目录结构,比如将原Views目录改成了T,然后在程序初始化的时候,注册加入这个自己的视图引擎类。

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new myVi上海徐汇企业网站设计与制作ewEngine());

将项目中Views目录改名T,调试成功。这样,以后的目录结构我们自己可以任意定义。非常方便。

但是,有人可能会说那6个目录定义属性都是public的,可以直接调出来修改,结果我也这样试过,没成功,无论我直接调用RazorViewEngine封装,还是VirtualPathProviderViewEngine继承后为属性设定值。都没成功,可能我的方法有问题。 如果你知道,希望可以告诉我。

另外这样自定义目录结构后,在View和Controller之间不能定位了,VS环境还是认为Views目录是视图文件目录,自己定义的T目录没有了“脚手架”...

时间: 2024-10-29 11:08:17

也玩MVC3.“.NET研究”0 Razor自定义视图引擎来修改默认的Views目录结构的相关文章

一起谈.NET技术,也玩MVC3.0 Razor自定义视图引擎来修改默认的Views目录结构

刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣.今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问.随手贴出来希望大家指教指教. MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它.通过reflector找到视图引擎的构造接口类VirtualPathProviderViewEngine 在MVC2.0中,自定义自己的视图引擎,继承它即可,但在3.0中,我发现继承它会缺少一个函数.再reflect

也玩MVC3.0 Razor自定义视图引擎“.NET技术”来修改默认的Views目录结构

刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣.今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问.随手贴出来希望大家指教指教. MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它.通过reflector找到视图引擎的构造接口类VirtualPathProviderViewEngine 在MVC2.0中,自定义自己的视图引擎,继承它即可,但在3.0中,我发现继承它会缺少一个函数.再reflect

ASP.NET MVC3 “.NET研究”Razor视图引擎-基础语法

I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!). 2.默认MVC3模板项目已集成 3.全新的Razor视图引擎 @{ ViewBag.Title = "Home Page";} <h2>@ViewBag.Message</h2><p> To lea

ASP.NET MVC3 系列教程 - Razor视图引擎基础语法

原文:ASP.NET MVC3 系列教程 - Razor视图引擎基础语法 I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!) 2.默认MVC3模板项目已集成 3.全新的Razor视图引擎 @{ ViewBag.Title = "Home Page"; }   <h2>@View

ASP.NET MVC3 Razor视图引擎-“.NET技术”基础语法

I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!). 2.默认MVC3模板项目已集成 3.全新的Razor视图引擎 @{ ViewBag.Title = "Home Page";} <h2>@ViewBag.Message</h2><p> To lea

一起谈.NET技术,ASP.NET MVC3 Razor视图引擎-基础语法

I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!). 2.默认MVC3模板项目已集成 3.全新的Razor视图引擎 @{ ViewBag.Title = "Home Page";} <h2>@ViewBag.Message</h2><p> To lea

unity3d-unity5.0 引用自定义动态库

问题描述 unity5.0 引用自定义动态库 unity5.0 (bate 64bit) 引用自定义动态库,生成apk包 ,能把.so文件打包进去,但安卓上运行找不到这个.so文件,找不到该文件.3.5版本一切正常?新版是有改动么? 1.AssetsPluginsAndroid 目录建立了,也把.so放进去了 2..so文件的平台和 playerseting中的device filter 也选成ARMV 7 了 3.生成的APK包里libarmeabi-v7a 目录下也能找到这个.so文件 4.

vc60-如何用vc6.0画自定义按钮

问题描述 如何用vc6.0画自定义按钮 想要自制按钮,就是按下之后会亮的那种,用vc怎么画,或者说哪里有资源吗 解决方案 参考:http://blog.csdn.net/lightboat09/article/details/6069710http://download.csdn.net/detail/nexuiz2/3445593 解决方案二: setwindowlong子类化按钮,在wndproc里拦截WM_PAINT消息,使用GDI/GDI+或其他的绘图,返回0阻止系统重画 解决方案三:

《玩转微信6.0》一导读

前 言 玩转微信6.0 编写初衷 微信,是一种新的生活方式,是一款超过3亿人使用的手机应用.它于2011年1月21日由腾讯公司推出,能通过网络实现发送文字.语音.图片.视频等功能.它将传统的短信.彩信的模式转移到移动互联网平台并进行再创新,提供了一个更灵活.更智能的全新的沟通和传播信息的方式.在同年由<商业价值>杂志.极客公园联合举办的"中国互联网创新产品评选"中,微信获得了最佳人气奖.微信,它不仅仅是一款聊天软件,更是一种时尚,一种娱乐的新方式,一种产品营销的新手段. 微