Asp.net动态页面静态化之输出对象属性(实体关联)

Asp.net动态页面静态化之输出对象属性(实体关联)

模板引擎不单单可以输出单一的数据,还能直接输出对象的属性

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

namespace czbk
{
    /// <summary>
    /// Handler2 的摘要说明
    /// </summary>
    public class Handler2 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";//plain表示普通文本格式输出 静态化应该输出html格式文本
            User user = new User();
            user.Username = "王大锤";
            user.Userphone = "18312345678";
            Role role = new Role();
            role.Roleid = "1001";
            role.Rolename = "超级搞笑王";
            user.User_Role1 = role;//给关联对象赋值
            VelocityEngine vltEngine = new VelocityEngine();
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/"));//模板文件所在的文件夹
            vltEngine.Init();
            VelocityContext vltContext = new VelocityContext();
            vltContext.Put("u", user);//设置参数,在模板中可以通过$u来引用
            Template vltTemplate = vltEngine.GetTemplate("Users.htm");
            System.IO.StringWriter vltWriter = new System.IO.StringWriter();
            vltTemplate.Merge(vltContext, vltWriter);
            string html = vltWriter.GetStringBuilder().ToString();
            context.Response.Write(html);
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    public class User
    {
        private string username;

        public string Username
        {
            get { return username; }
            set { username = value; }
        }
        private string userphone;

        public string Userphone
        {
            get { return userphone; }
            set { userphone = value; }
        }
        private Role User_Role;//引入一个关联的类对象

        public Role User_Role1
        {
            get { return User_Role; }
            set { User_Role = value; }
        }
    }
    public class Role
    {
        private string roleid;

        public string Roleid
        {
            get { return roleid; }
            set { roleid = value; }
        }
        private string rolename;

        public string Rolename
        {
            get { return rolename; }
            set { rolename = value; }
        }
    }
}

前台代码

<!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>
</head>
<body>
<form action='Handler2.ashx'>

用户名:<input type="text" name='username' value='$u.username' /><br />
用户电话:<input type="text" name='userphone' value="$u.userphone" /><br />
用户角色名:<input type="text" name='userrolename' value="$u.User_Role1.rolename" /><br />
用户角色名2:<input type="text" name='userrolename' value="$u.User_Role1.Rolename" /><br />
<span style="color:red;">可能是html不区分大小写 所以这时调用大小写都是可以的 欢迎大家指出错误</span>
</form>
</body>
</html>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 21:58:54

Asp.net动态页面静态化之输出对象属性(实体关联)的相关文章

Asp.net动态页面静态化之字典哈希表的输出已及遍历判断的实现

Asp.net动态页面静态化之字典哈希表的输出已经遍历判断的实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; using NVelocity.Runtime; using NVelocity; using NVelocity.App; using System.Collections; namespace czbk { /// <summary> /// diction

Asp.net动态页面静态化之include和parse区别

Asp.net动态页面静态化之include和parse区别    #include就是在模版中在将其他模版包括进来,就好比网站的头部,尾部,广告模版等等,这些内容都是相同的时候,就可以做成一个单独的模版供各处引用. #parse的用法跟#include相类似,如果将上面的代码改成#parse之后,效果是一样的,#parse的特殊功能在于,它可以解析Nvelocity元素,比如,body.html 模版使用Nvelocity变量 $body ,如果使用#parse引用head.html和foot

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

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

Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则.强大的功能.高效的渲染效率.详尽的帮助说明与不断的更新与维护.常见的前端模板引擎有: 常用的java后台模板引擎:jsp.FreeMarker.Velocity等. 请不要迷恋速度,为了推广的测试可能是片面的,好的模板引擎经得起时间考验,建议大家选择成熟的.常用的模板引擎.另外不管前后端的模板引擎

学习笔记 --- 缓存、动态页面静态化、网站优化

http://www.cnblogs.com/cs_net/archive/2011/03/17/1986620.html 一.缓存 缓存(Cache)技术在软件开发过程中有着广泛的用途, 它对提升软件性能和改善客户体验有很大帮助. 所谓缓存, 是指将那些经常重复的操作结果暂时存放起来, 在以后的执行过程中, 只要使用前面的暂存结果即可. 缓存技术在日常生活中随处可见, 就拿排队买票来说吧: 买票时需要先排队, 等轮到自己了, 再告诉售票员你需要买那里的票, 售票员查询完后告诉你有还是没有. 若

动态页面静态化的实现

首先,应该明确动态页面与静态页面之间的区别,为什么静态页面的加载要比动态的快. PHP文件的执行阶段是:语法分析——>编译——>运行. 动态是执行这整个过程. 静态(只是一个纯静态的 html 文件),跳过了分析和编译的步骤,直接运行. (优化页面响应时间的常见四种方法:动态页面静态化,优化数据库,使用负载均衡,使用缓存..) 静态化用于那些不需要经常变动的页面,生成一个静态页面供用户访问,以减少服务器脚本的响应.计算时间. PHP静态化-->伪静态:可以通过设置apache服务器得到,

Asp.Net MVC页面静态化功能实现二:用递归算法来实现

上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter 后来想到可以通过WebRequest获取html代码,然后采用递归算法来实现.基本实现思路如下: 通过WebRequest获取超链接地址返回的html代码,并保存:通过正则表达式匹配html代码中所有的超链接hr

利用ResultFilter实现asp.net mvc3 页面静态化

为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容的文本保存,直接上代码: 1 public class StaticFileWriteFilterAttribute : FilterAttribute, IResultFilter 2 { 3 public void OnResultExecuted(ResultExecutedContext f

利用ResultFilter实现asp.net mvc 页面静态化

为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容的文本保存,直接上代码: public class StaticFileWriteFilterAttribute : FilterAttribute, IResultFilter { public void OnResultExecuted(ResultExecutedContext filterC