人员查询:
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遍历,DataTable的Row属性
//代表表格中的数据行的集合(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页面,决定要显示成什么样子