龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

学习ASP.NET MVC设计模式(5):ViewEngine 深入解析与应用实例(3)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
3.使用StringTemplateViewEngine (1)为 .st 模板页增加智能感知 首先做一些准备工作. 因为我们的StringTemplate模板文件后缀是".st", 里面写的大部分都是HTML代码. 默认

3.使用StringTemplateViewEngine

(1)为 .st 模板页增加智能感知

首先做一些准备工作. 因为我们的StringTemplate模板文件后缀是".st", 里面写的大部分都是HTML代码. 默认情况下Visual Studio是不会在编辑.st功能的时候提供智能感知支持的. 但是可以通过如下设置实现:

单击菜单中的"工具"->"选项":

image

在"文本编辑器"的文件扩展名中, 如图所示的为.st扩展名增加"HTML编辑器".

接下来在.st文件中就可以识别HTML代码了:

image 

(2) 创建公用的菜单模板

StringTemplate引擎支持模板的嵌套, 所以可以讲两个页面公用的菜单栏放在menu.st文件中. 而且我们将此文件放在share文件夹中以便供所有模板页调用. menu.st文件代码如下:

<ul id="menu">
    <li><a href="/StringTemplate/HelloST">HelloST</a></li>
    <li><a href="/StringTemplate/SharedST">SharedST</a></li>
</ul> 

(3) 创建页面模板和Controller

在Controller文件夹中, 创建StringTemplateController用于跳转到我们的模板页:

    public class StringTemplateController : Controller
    {
        public ActionResult HelloST()
        {
            ViewData["msg"] = "Hello String Template ! ";
            return View("HelloST");
        }
    }

在View文件夹中创建StringTemplate文件夹, 添加一个HelloST.st文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>在Shared文件夹中的st页面</title>
<link href="../Content/Site.css" rel="stylesheet" type="text/css" /></head>
<body>
    <div class="page">  
        <h1>StringTemplateViewEngine示例程序</h1>
        <div id="menucontainer"> 
            $Views/Shared/menu()$
        </div>
        
        <div id="main">
            $msg$
        </div>
    </div>
</body>
</html>

示例中的代码十分简单, "$msg$"是StringTemplate的模板语言, 可以识别名称为"msg"的变量. "$Views/Shared/menu()$"也是StringTemplate中的语法, 作用是加载名为menu的模板.

(4) 加载StringTemplateViewEngine 模板引擎

虽然Controller和View文件都建立好了, 但是因为ASP.NET MVC默认的视图引擎是WebFormViewEngine, 但是可以同时使用多个视图引擎, 比如可以为所有".st"后缀名的文件使用StringTemplateViewEngine视图引擎.在Global.asax文件中, 在程序启动时注册我们的ViewEngine:

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);

            //添加StringTemplate视图引擎
            StringTemplateViewEngine engine = new StringTemplateViewEngine(Server.MapPath("/"));
            ViewEngines.Engines.Add(engine);
        }

现在, 访问"localhost/StringTemplate/HelloST" ,就可以看到我们的自定义的模板引擎的输出结果了:

image

在文章最后会提供本实例附带StringTemplateViewEngine的完整源代码.


精彩图集

赞助商链接