AutumnalRiver

我喜欢秋天,因为那是丰收的时节。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET MVC 中应用主题

Posted on 2008-10-23 16:53  秋江  阅读(4147)  评论(16编辑  收藏  举报

在 ASP.NET 传统的 Web 项目中,我们知道可以应用主题(Theme)。但在 ASP.NET MVC 项目中如何应用呢。因为着重于 ASP.NET MVC 的基本特性,所以一时也没有想解决方法。

在浏览相关网页时,曾经看到一种实现方式,How To Setup Custom Theme Support In ASP.NET MVC Preview 4 using a Custom ViewEngine,原理是利用 ViewEngine 相关类实现。

可我不想重新发明轮子,于是尝试使用 ASP.NET 2.0 主题。

 

一、体力活:

  1. 添加主题文件夹
  2. 将原 Content 文件夹下面的 CSS 文件移到新建的主题目录下
  3. 移除 MasterPage Head 中所有关于默认 CSS 文件的引用
  4. 在 Web.config 文件中的 Page 元素指定主题

 

二、运行试试

出人意料,结果是不能运行,报错提示:Using themed css files requires a header control on the page. (e.g. <head runat="server" />).于是我按照错误提示,在 Default.aspx 中加入 <head runat="server"></head>,如:

Code

 保存、编译并运行。^_^,成了,看到页面了!打开源码文件:

Code

嗯,不错!看来我可以简单的按此方法将主题应用到我的MVC项目中。

 

三、美中不足

虽然看起来一切正常,可是一向好奇的我发现,在源文件的结尾处(</html>之后)发现了重复的 head 内容:

Code

相信你看了,也会觉得美中不足。

那么怎么解决这个问题呢?想想这是如何出现的吧,就是因为在 Default.aspx 中加入 <head runat="server"></head>,才出现这种情况的。去掉它?不行。仔细想想,觉得大概是 HttpHandler 处理了两次请求,干脆重定向吧,于是打开 Default.aspx.cs 文件,做如下修改:

Code
保存、编译并运行,页面显示正常,打开源文件再看看,发现已经没有重复的 head 内容。