Nvelocity模板引擎实现人员的增删改查(一)查询

人员查询:

1.       新建项目CRUDTest

2.       Nvelocity添加引用

3.       CommonHelper.cs方法对html模板的渲染

4.       Templates模板文件夹建立

5.       书写CommonHelper.cs中代码

    public classCommonHelper

    {

       ///<summary>

       ///data数据填充模板templateName模板,渲染生成html

       ///</summary>

       ///<param name="templateName"></param>

       ///<param name="data"></param>

       ///<returns></returns>

       public staticstring RenderHtml(stringtemplateName,object data)

       {

           VelocityEngine vltEngine = newVelocityEngine();

           vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");

           vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,

               System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹

           vltEngine.Init(); 

            VelocityContext vltContext = new VelocityContext();

           vltContext.Put("Data", data);//设置参数,在模板中可以通过$Data来引用 

           Template vltTemplate = vltEngine.GetTemplate(templateName);//把文件名templateName传入

           System.IO.StringWriter vltWriter = newSystem.IO.StringWriter();

           vltTemplate.Merge(vltContext, vltWriter);

           string html =vltWriter.GetStringBuilder().ToString();

           return html; 

       }

    } 

6.       数据库的连接

a.新建数据库,设计字段Id,Name,Email

7.       连接字符串

<?xmlversion="1.0"encoding="utf-8"?> 

<!--

  有关如何配置 ASP.NET应用程序的详细消息,请访问

  http://go.microsoft.com/fwlink/?LinkId=169433

  --> 

<configuration>

   <system.web>

       <compilation debug="true" targetFramework="4.0"/>

   </system.web>

     <connectionStrings>

        <addname="dbConnStr"connectionString=

             "DataSource=.\SQLEXPRESS;Initial Catalog=CEUDTest;UserId=hrmsa;Password=123456"></add>

      </connectionStrings>

</configuration> 

8.       书写SqlHelper.cs

9.       实现查询数据库T_Persons中的所有数据并展现出来

a.       新建一般处理程序PersonList.ashx

public void ProcessRequest(HttpContext context)

        {

           context.Response.ContentType = "text/html";

            DataTable dt= SqlHelper.ExecuteReader("select * from T_Persons");

            //DataTable不是集合,所以无法foreach遍历,DataTableRow属性

            //代表表格中的数据行的集合(DataRow的集合),一般传递DataRowCollection给模板方便遍历

            string html =CommonHelper.RenderHtml("PersonList.htm",dt.Rows);

           context.Response.Write(html);           

        } 

b.      PersonList.htm中要做的事就是对dt.Rows的数据分析并布局显示到页面上

<!DOCTYPE htmlPUBLIC"-//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>

</head>

<body>

    <table>   

    <thead>

        <tr><td>姓名</td><td>年龄</td><td>邮箱</td></tr>

    </thead>

    <tbody>

        #foreach($person in $Data)

            <tr><td>$person.Name</td><td>$person.Age</td><td>$person.Email</td></tr>

        #end

    </tbody>

    </table>

</body>

</html>

此处模板引擎的作用即是:相当于一个媒介功能,传递给其一个DataRow数据行集合,在htm通过模板引擎,可以直接使用其数据

#foreach($person in $Data)

            <tr><td>$person.Name</td><td>$person.Age</td><td>$person.Email</td></tr>

#end

 

总结:这种方法可以做到数据、逻辑、界面分离是MVC的基础,一般处理程序得到数据之后,通过CommonHelper.RenderHtml("PersonList.htm",dt.Rows);将数据扔给模板

由模板决定数据该怎么处理渲染到html页面中,一般处理程序只获取数据,完全不理会页面怎么显示;而模板也不管数据是怎么来的,它只管使用,并渲染成html页面,决定要显示成什么样子

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值