ASP.NET 模板引擎 - NVelocity

1,HTML的Form表单数据按Button提交数据以后,提交到 Action 指定的服务器端处理程序(.ashx)进行处理后 ,再响应的浏览器。

2,我们把 HTML的表单,写到 .ashx 一般处理程序页面中,这样就一般处理程序页面就可以显示 Form表单登陆,并且可以处理是否登陆成功的逻辑部分,前台显示和后天业务逻辑整合到了一起,如下:

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";

            //渲染一个Form表单
            context.Response.Write("<html>");
            context.Response.Write("<head>一般处理程序登陆页面</head><body><form  action=‘login.ashx‘ action=‘get‘><br/><br/>"); //
            context.Response.Write("用户名:<input type=‘text‘ name=‘UserName‘ /><br/>");
            context.Response.Write("密码:<input type=‘password‘ name=‘Pwd‘ /><br/>");
            context.Response.Write("提交:<input type=‘submit‘ /><br/>");

            string strUserName = context.Request.QueryString["UserName"];
            string strPwd = context.Request.QueryString["Pwd"];
            if (string.IsNullOrEmpty(strUserName) == false)  //登陆名不为空的时候,检查密码是否正确
            {
                if (strUserName == "admin" && strPwd == "123")
                {
                    context.Response.Write("恭喜您,登陆成功");
                }
                else
                {
                    context.Response.Write("登陆失败");
                }
            }
        }

  但是这样去做,网页表单 只有通过这种修改 .ashx一般处理程序的方法去修改。

  没法给前天美工可以处理的地方,另外如果后天业务逻辑复杂的话,这样的整合就更复杂了。

3,如果有一个文件 又可以区分前台显示和后台业务逻辑 这样就好了

4,nVelocity是一个基于.NET的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象

5, nVelocity,下载网址:NVelocity - A .Net Template Engine ,下载后把 dll文件放到项目中,然后 引用添加对dll的引用,注意对应的 .NET Framework版本

6, Login_NVelocity.html和Login_NVelocity.ashx代代码分别如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>一般处理程序登陆页面</title>
</head>
<body>
    <form action="Login_NVelocity.ashx" method="get">
        用户名:<input type="text" name="UserName" value="$name" /><br />
        密码:<input type="password" name="password" value="$pwd" /><br />
        提交:<input type="submit" /><br />
        <p>$message</p>
    </form>
</body>
</html>

Login_NVelocity.ashx :  一般处理程序页面实现了对HTML模板页面中变量的控制  $name, $pwd,$message

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NVelocity;
using NVelocity.App;
using Commons.Collections;
using NVelocity.Runtime;
using System.IO;

namespace HttpHandler
{
    /// <summary>
    /// LoginNVelocity 的摘要说明
    /// </summary>
    public class LoginNVelocity : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";

            string strUserName = context.Request["username"];
            string strPwd = context.Request["password"];
            string strMsg = context.Request["message"];

            string strHtml = "";
            if (string.IsNullOrEmpty(strUserName) && string.IsNullOrEmpty(strPwd))
            {
                strHtml = Template_Nvelocity("", "", "");
            }
            else if (strUserName == "admin" && strPwd == "123")
            {
                strMsg = "恭喜您,登陆成功!";
                context.Response.Write(strMsg);
            }
            else
            {
                strMsg = "登陆失败,用户名或者密码错误";
                strHtml = Template_Nvelocity(strUserName, strPwd, strMsg);
            }
            //输出
            context.Response.Write(strHtml);

        }
        //模板引擎方法,传递 登录名、登陆密码、登陆是否成功 这三个变量
        public string Template_Nvelocity(string strUserName, string strPwd, string strMsg)
        {

            //创建NVlecocity模板引擎的实例对象
            VelocityEngine vlEngine = new VelocityEngine();

            //初始化实例对象,定义对象的部分属性
            ExtendedProperties props = new ExtendedProperties();
            props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");//声明模板是在file中
            props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/"));  //指定模板文件所在文件夹
            vlEngine.Init(props);

            //替换模板中的数据
            VelocityContext vltContext = new VelocityContext();
            //vltContext.Put("data", data);  //设置参数,在模板中可以通过$Data读取数据
            vltContext.Put("name", strUserName);
            vltContext.Put("pwd", strPwd);
            vltContext.Put("message", strMsg);

            //从文件中读取模板
            Template VltTemp = vlEngine.GetTemplate("Login_NVelocity.html");
            //合并模板
            StringWriter writer = new StringWriter();
            VltTemp.Merge(vltContext, writer);

            //转化为字符串
            string html = writer.GetStringBuilder().ToString();

            return html;
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

附件: NVelocity DLL

时间: 2024-10-08 03:30:03

ASP.NET 模板引擎 - NVelocity的相关文章

前端模板引擎arttemplate,后端模板引擎Nvelocity

It's my first blog 大家好,我叫曾岑,朋友们都叫我包子,今年21岁,湖北人,刚大学毕业,学的.net开发.去年一年,在南京工作了一年,那时候还没有拿到毕业证,找工作也是蛮难的,别人说没毕业证,也没经验,工资只能给个基础工资,不过还好,和几个朋友一起结伴去的,一起租的房子住的.在南京的工作经历就不说那么多了,至少让我看到了编程的这个世界. 今年7月份,辞掉了南京的工作,来到了深圳这个城市,重新开始找工作,运气还算不错,第二天就面试上了,第三天就正式上班了,工资待遇对于我这种新手来

C#模板引擎NVelocity实战项目演练

一.背景需求 很多人在做邮件模板.短信模板的时候,都是使用特殊标识的字符串进行占位,然后在后台代码中进行Replace字符串,如果遇到表格形式的内容,则需要在后台进行遍历数据集合,进行字符串的拼接,继而Replace模板中的占位符 !今天给大家分享一个WinForm方面的模板引擎的小技巧和小技能吧,本次课程阿笨给大家分享关于WinForm开发中如何通过模板引擎NVelocity根据动态数据生成漂亮的订单详细查看页面? 1.1.本次分享课程包含知识点如下: 1).WinForm中WebBrowse

asp .net 模板引擎 使用 Razor 生成html静态页面

刚开始不是理解 写完之后 觉得还蛮简单的 分为这几个步骤 1.获取页面模板Html 2.获取数据 3.解析模板和数据,生成静态页Html代码 4.生成静态文件 模板形式是mvc的模式,会mvc 看一下就懂了 主要是第2步和第3步 需要应用下面文件 RazorEngine.dll System.Web.Razor.dll /// <summary> /// 获取页面的Html代码 /// </summary> /// <param name="url">

Asp.net动态页面静态化之初始NVelocity模板引擎

Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含"?"."="."&"等特殊符号. 静态页面不能自主管理公布更新的页面,假设想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件改动(通过fso等技术例外) 常见的静态页面举例:.html扩展名的..htm扩展名的. 注意:静态页面并

asp.net的Nelocity模板引擎

在asp开发中,时常遇到向程序中写入HTML代码的情况,以在ashx中写入HTML为例,演示Nvelocity的使用, 1 VelocityEngine vltEngine = new VelocityEngine(); 2 //文件型模板,还可以是 assembly ,则使用资源文件 3 vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file"); 4 //模板存放目录 5 vltEngine.SetProperty

只需一句话就能搞定NVelocity模板引擎,源码+解析+文档+资料+注释

好长时间不发技术方面的动态了,今天无聊就发篇关于NVelocity的技术文章吧,这门技术来源于java开源项目Velocity,比较好用,其他的我也不过多介绍了,没听过的在文章末尾会有介绍,下面我们就实战吧~ 咱们直接上最简单的方法,一句话搞定: DNTNvelocityHelper.NvelocityTemplate(context.Request.MapPath("~/NVelocity/templates/"), context, "Templater_index.dn

强大的模板引擎开源软件NVelocity

背景知识NVelocity(http://sourceforge.net/projects/nvelocity )是从java编写的Velocity移植的.net版本,是java界超强的模版系统,.net版本的NVelocity目前版本为0.42.NVelocity拥有完善的.丰富的模板语言(VTL,Velocity Template Language) ,几乎所有高级语言的特性都可以在模板引擎语言中找到.(如流程控制语句.数学运算.关系和逻辑操作符.函数定义.注释等等) NVelocity可以

NVelocity模板引擎在项目中的应用

NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象.至于其他的一些别的NVelocity的的解释.和一些用法这里就不在提及. 具体的使用方法: 1,定义Velocity辅助类(VelocityHelper.cs) 提供下载  当然,这个辅助类需要添加NVelocity.dll的引用. 2,aspx页面和Template的结构说明 这个其实是需要根据个人喜好来定!为

使用模板引擎(Nvelocity)写代码生成器

之前做了一个项目,由于数据库表比较多,每次都手写model,还有数据库操作之类的东西,感觉浪费时间,也没技术含量,还容易出错,最主要的原因还是懒,不想翻来覆去的写这种代码,于是想到要用代码生成器直接生成,在网上找到很多,但是生成的代码要么看着不安逸,毕竟每个人的风格不同,要么就是生成很多自己根本不需要的垃圾代码,正好最近闲来无事,决定自己动手写一个. 一开始我是想到使用stringbuilder拼接字符串来实现,但是字符串拼接起来相当麻烦,代码量也很多,看起乱糟糟的很不舒服,还有就是得注意格式,