NVelocity的使用

public static void createStaticPageByNVelocity(Model.Book model)  //model为一个实体对象
        {
            VelocityEngine vltEngine = new VelocityEngine();//创建模板引擎.
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, HttpContext.Current.Server.MapPath("/Admin/")); //这里是模板的路径
            vltEngine.Init();


            VelocityContext vltContext = new VelocityContext();//设置模板文件中的内容
            vltContext.Put("title", model.Title);  //替换模板中的内容
            vltContext.Put("body", model.ContentDescription);
            vltContext.Put.("bookId", model.Id.ToString());

            Template vltTemplate = vltEngine.GetTemplate("StaticPage_BookInfoTemplate.htm");//模板引擎加载模板
            using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
            {
                vltTemplate.Merge(vltContext, vltWriter);
                string dir = "/StaticPage/" + model.PublishDate.Year + "/" + model.PublishDate.Month + "/" + model.PublishDate.Day + "/";  
                Directory.CreateDirectory(Path.GetDirectoryName(HttpContext.Current.Server.MapPath(dir)));//动态生成文件夹
                File.WriteAllText(HttpContext.Current.Server.MapPath(dir + model.Id + ".html"), vltWriter.GetStringBuilder().ToString(), System.Text.Encoding.UTF8); //保存到相应的文件夹下
            }

        }


下面是模板内容,特别需要注意的是,如果模板中有jQuery,使用"$."这样的语句一定要换成 "jQuery.", 因为模板引擎替换会将"$."换成“.” ,美元符号消失

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>$title</title>
    <script src="/js/jquery-1.4.2.js" type="text/javascript"></script>
    <script type="text/javascript">
        function loadComment() {
            jQuery.ajax({
                url: "/ashx/bookComment.ashx",
                type: "post",
                dataType: "json",
                data: { "action": "load", "bookId": $bookId },
                success: function (data) {
                    var comUl = jQuery("#comUl");
                    if (data) {
                        comUl.empty();
                        for (var i = 0; i < data.length; i++) {
                            var li = $("<li>" + data[i].createDateTime + ':' + data[i].Msg + "</li>");
                            li.appendTo(comUl);
                        }
                    }
                },
                error: function () {
                    alert("服务器内部错误");
                }
            });
        }
        function submitComment() {
            var content = jQuery.trim($("#content").val());
            if (content.length > 0) {
                jQuery.ajax({
                    url: "/ashx/bookComment.ashx",
                    type: "post",
                    data: { "action": "add", "bookId": $bookId, "msg": content },
                    success: function (rel) {
                        if (rel == 1) {
                            loadComment();
                        } else {
                            alert("评论失败!");
                        }
                    },
                    error: function () {
                        alert("服务器内部错误");
                    }
                });
            } else {
                alert("请输入评论内容!");
            }
        };
        $(function () {
            loadComment();
            jQuery("#submit").click(submitComment);
        });
    </script>
</head>
<body>
    $body
    <hr />
    <ul id="comUl">
    </ul>
    <div>
        <textarea id="content" rows="20" cols="40"></textarea>
        <input type="button" id="submit" value="发表评论" />
    </div>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值