天天看点

ASP.NET MVC:多模板支持

准备写个博客练习一下WEB编程,有一个需求就是多模板支持,类似博客园的自定义模板一样,在ASP.NET MVC中如何处理这个需求呢?

描述

允许自定义模板,比如:传统模板、Metro模板等

模板结构

ASP.NET MVC:多模板支持

重写模板引擎的默认搜索路径

ASP.NET MVC:多模板支持
ASP.NET MVC:多模板支持

分析

这回导致全局的修改,或者应该增加一个搜索路径(这里就不测试了),因为有些视图是不用多模板支持的,因此这种方式不太适合。

为VIewResult指定路径

这种非常灵活,符合需要,但是代码看起来不够漂亮,好在MVC非常灵活,可以用Filter机制帮我们处理。

Filter机制

ASP.NET MVC:多模板支持
ASP.NET MVC:多模板支持
ASP.NET MVC:多模板支持
ASP.NET MVC:多模板支持

采用FIlter这种AOP机制,让调用代码看起来非常漂亮,最终就采用这种方式。

代码

ASP.NET MVC:多模板支持
ASP.NET MVC:多模板支持

运行效果

ASP.NET MVC:多模板支持
ASP.NET MVC:多模板支持

ViewResult的ViewName可以是绝对路径,也可以是相对路径,默认的相对路径是相对于Controller目录。

继续阅读