也玩MVC3.0 Razor自定义视图引擎“.NET技术”来修改默认的Views目录结构
2011-10-13 19:27
621 查看
刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。
MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。通过reflector找到视图引擎的构造接口类VirtualPathProviderViewEngine
在MVC2.0中,自定义自己的视图引擎,继承它即可,但在3.0中,我发现继承它会缺少一个函数。再reflector获得了BuildManagerViewEngine的抽象类,因为RazorViewEngine继承的是该抽象类。
所以最直接还是在自己的视图引擎中继承它。
上面是原Razor视图引擎的构造类,我只是拷贝下来修改修改我希望的目录结构,比如将原Views目录改成了T,然后在程序初始化的时候,注册加入这个自己的视图引擎类。
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new myViewEngine());
将项目中Views目录改名T,调试成功。这样,以后的目录结构我们自己可以任意定义。非常方便。
但是,有人可能会说那6个目录定义属性都是public的,可以直接调出来修改,结果我也这样试过,没成功,无论我直接调用RazorViewEngine封装,还是上海企业网站制作oviderViewEngine" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Web.Mvc:3.0.0.0:31bf3856ad364e35/System.Web.Mvc.VirtualPathProviderViewEngine">VirtualPathProviderViewEngine继承后为属性设定值。都没成功,可能我的方法有问题。 如果你知道,希望可以告诉我。
另外这样自定义目录结构后,在View和Controller之间不能定位了,VS环境还是认为Views目录是视图文件目录,自己定义的T目录没有了“脚手架”...
MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。通过reflector找到视图引擎的构造接口类VirtualPathProviderViewEngine
在MVC2.0中,自定义自己的视图引擎,继承它即可,但在3.0中,我发现继承它会缺少一个函数。再reflector获得了BuildManagerViewEngine的抽象类,因为RazorViewEngine继承的是该抽象类。
所以最直接还是在自己的视图引擎中继承它。
上海企业网站设计与制作 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(controllerContex上海网站建设t, viewPath, layoutPath, runViewStartPages, fileExtensions, base.ViewPageActivator); } }
上面是原Razor视图引擎的构造类,我只是拷贝下来修改修改我希望的目录结构,比如将原Views目录改成了T,然后在程序初始化的时候,注册加入这个自己的视图引擎类。
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new myViewEngine());
将项目中Views目录改名T,调试成功。这样,以后的目录结构我们自己可以任意定义。非常方便。
但是,有人可能会说那6个目录定义属性都是public的,可以直接调出来修改,结果我也这样试过,没成功,无论我直接调用RazorViewEngine封装,还是上海企业网站制作oviderViewEngine" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Web.Mvc:3.0.0.0:31bf3856ad364e35/System.Web.Mvc.VirtualPathProviderViewEngine">VirtualPathProviderViewEngine继承后为属性设定值。都没成功,可能我的方法有问题。 如果你知道,希望可以告诉我。
另外这样自定义目录结构后,在View和Controller之间不能定位了,VS环境还是认为Views目录是视图文件目录,自己定义的T目录没有了“脚手架”...
相关文章推荐
- 一起谈.NET技术,也玩MVC3.0 Razor自定义视图引擎来修改默认的Views目录结构
- 也玩MVC3.0 Razor自定义视图引擎来修改默认的Views目录结构
- 也玩MVC3.“.NET研究”0 Razor自定义视图引擎来修改默认的Views目录结构
- 一起谈.NET技术,ASP.NET MVC3 Razor视图引擎-基础语法
- 【小技巧】自定义asp.net mvc的WebFormViewEngine修改默认的目录结构
- 【小技巧】自定义asp.net mvc的WebFormViewEngine修改默认的目录结构
- 【小技巧】自定义asp.net mvc的WebFormViewEngine修改默认的目录结构
- ASP.NET MVC3 Razor视图引擎-“.NET技术”基础语法
- ASP.NET MVC:自定义RazorViewEngine视图引擎
- HydromCMS增加封面、完善自定义目录功能、目录结构的修改功能
- Word 2007文档结构图 大纲视图 目录默认折叠收缩
- Razor视图引擎布局 Razor视图引擎的基本概念与法语 SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射 binary 和 varbinary datetime 和 smalldatetime float 和 real
- MVC5-5 Razor引擎及视图结构
- 一起谈.NET技术,ASP.NET MVC之视图引擎
- Yii 1.1.17 一、安装、目录结构、视图、控制器、扩展自定义函数
- vs2015升级后台mvc视图编辑器默认不是razor视图引擎问题
- NopCommerce的后台分离技术(自定义视图引擎)
- 修改织梦默认栏目页、文章页URL命名规则,简化目录结构
- 修改织梦默认栏目页、文章页URL命名规则,简化目录结构
- ASP.NET MVC3 “.NET研究”Razor视图引擎-基础语法