博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC:自定义RazorViewEngine视图引擎
阅读量:6271 次
发布时间:2019-06-22

本文共 1946 字,大约阅读时间需要 6 分钟。

最近使用ASP.NET MVC 4.0,发现虽然可以自定义路由、视图的规则,但相对还是比较死板,

全部的Contorl都放一起,全部的Views都放一起,功能多的时候岂不乱七八糟,比如想按业务模块来划分功能代码,

ASP.NET MVC 2.0以后提供了Areas区域功能,可以让我们对代码进行分区分块,但这样的分区模式也还是不够灵活

呵,遂上网爬到自定义视图的方法,可惜自定义RazorViewEngine过程中,虽然运行时是成功的,开发中遇到各式各样的问题却不得而解

比如,新建一个CustomViewEngine.cs文件:

1 public class CustomViewEngine : RazorViewEngine 2 { 3     public CustomViewEngine() 4     { 5         ViewLocationFormats = 6         new string[]  7         {  8             "~/Views/{1}/{0}.cshtml", 9             "~/Views/{1}/Shared/{0}.cshtml",10             "~/Views/Shared/{0}.cshtml"11         };12         AreaViewLocationFormats = new[]13         {14             "~/Areas/{2}/Views/{1}/{0}.cshtml",15             "~/Areas/{2}/Views/Shared/{0}.cshtml",16 17             "~/Areas/Apps/{2}/Views/{1}/{0}.cshtml",18             "~/Areas/ERP/{2}/Views/{1}/{0}.cshtml",19             "~/Areas/OA/{2}/Views/{1}/{0}.cshtml",20 21             "~/Areas/Apps/{2}/Views/Shared/{0}.cshtml",22             "~/Areas/ERP/{2}/Views/Shared/{0}.cshtml",23             "~/Areas/OA/{2}/Views/Shared/{0}.cshtml"24         };25 26         PartialViewLocationFormats = ViewLocationFormats;27         AreaPartialViewLocationFormats = AreaViewLocationFormats;28     }29 }

然后,修改Global.asax.cs文件:

1 protected void Application_Start() 2 { 3     AreaRegistration.RegisterAllAreas(); 4     WebApiConfig.Register(GlobalConfiguration.Configuration); 5     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 6     RouteConfig.RegisterRoutes(RouteTable.Routes); 7     BundleConfig.RegisterBundles(BundleTable.Bundles); 8  9     ViewEngines.Engines.Clear();                    // 清除原MVC视图引擎规则10     ViewEngines.Engines.Add(new CustomViewEngine());  // 使用自定义视图引擎规则11 }

经过上述改造,自定义RazorViewEngine视图引擎运行是成功了

但在控制器中“添加视图”位置就不对,用ReShaper添加也不对,添加后得手工再转移视图文件的位置,而“转到视图”功能则完全没的用了,提示“找不到匹配的视图”。

所以这样的自定义视图法,除了运行时成功和自己看着爽,VS开发工具和ReShaper插件均却告定位失败,

一句话总结:ASP.NET MVC的RazorViewEngine视图引擎自定义,真是让人哭笑不得,用之不爽,弃之可惜啊!

转载地址:http://svlpa.baihongyu.com/

你可能感兴趣的文章
validate表单验证及自定义方法
查看>>
知识点002-yum的配置文件
查看>>
学习 Git(使用手册)
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
RSA 加密解密
查看>>
Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression:......
查看>>
路由模式 - direct
查看>>
form表单的target属性
查看>>
mysql的常用引擎
查看>>
Linux基础(day40)
查看>>
第二个Java应用和Tomcat的管理功能
查看>>
10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步
查看>>
使用Layer弹窗时遇到Layer.Close()后dom元素延迟性销毁的问题 @Gyb
查看>>
LVS DR +keepalived配置
查看>>
安装redis.msi 及启动命令
查看>>
k8s集群部署四(部署Flannel网络)
查看>>
C4C和Outlook的集成
查看>>
人脸检测,人脸识别,机器学习库Dlib在VS2015上的详细安装教程,示例运行
查看>>
数组——冒泡排序算法
查看>>
微信H5支付坑一--手续费未结算
查看>>