asp.net mvc 用自定义的RazorViewEngine实现主题的自由切换遇到的问题!

这个问题纠结了我好几天了,虽然没彻底明白,只是稍有所进展,记录下,如果有能详细解答的请不吝赐教。

开篇: 熟悉mvc的同学都明白controller以及里面的action会默认对应views里面的文件,从而把controller里面的内容传递到页面,展示到浏览器上。如下图就是一个原始的mvc3项目里默认的Views里的结构

 

如果我们想做另一套风格的页面主题,并且能够实现跟上面自带的这套风格自由切换,简单理解就是仿照Views下面的目录结构再做与其并列的一套。如下所是目录结构:

我们在Views下添加了Themes文件,下面分为default与green,default里面是原来的文件,green里面是我们自己写的另外一套风格的文件。

接下来就用到本文标题写的RazorViewEngine类了,继承RazorViewEngine类去自定义试图引擎来实现default与green这两套主题的切换。(具体的操作到园子里找找吧,有很多文章写过了,我不啰嗦了,下面主要是写我自己遇到的问题)

问题: 在default与green里面我放了Content,用来写css文件与js文件,因为两个主题所用的不一样,放在这里分开调用也是最直观的解决方式了。但是问题出现了,通过自定义的视图引擎能够顺利切换default与green加载里面的Account、Home、Shared文件夹,但是当里面的页面link标签加载Content文件夹下的样式时会出现404。

在chrome F12的调试窗口中,请求Content中的文件后的status是canceled。

查了很多资料仍没有满意的接到,有一个回答说是跨站访问的原因,总是还是一头雾水。

不过尝试了很多次总算发现Content文件夹放置的位置不对!只要把他拿出来便能顺利调用了。

最后我在项目根目录下放Conent,在里面分别建立default与green来区分不同的样式文件,这样总算能完成主题的自由切换功能了。

功能是完成了,但为什么Content不能放在视图引擎管理的Views下还是很不解 *_*

posted @   张小然  阅读(1252)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示