• NVelocity学习笔记一——linq2sql+NVelocity完整demo


    (一)前言     

    刚刚进入新公司,看公司的项目,发现开发流程几乎和以前的完全不同,再看看页面布局竟然没有发现html。神马情况????一番探究发现使用了NVelocity模板引擎开发的。于是乎花了半天的时间比划着公司的项目做了一个小demo,也算是熟悉一下这种开发方式吧,同时也给将要学习这方面东西的朋友留个小教程。

    (二)实战     

    说明:因为公司项目数据库操作使用的是linq2sql,所以我也就拿这个操作数据库了(汗,其实我也没用过linq2SQL,都是EF,其实都差不多)。

    第一步:

    新建解决方案ProTest,不说了。

    第二步:

    新建类库LinqToSql,右击类库添加LinqToSql类。如图:

    第三步:

    将需要的表拖放到设计器上,会自动生成一些方法。

    第四步:

    新建一个操作数据库的实例类。

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace LinqToSql
    {
        public class DBContextFactory
        {
            public static  DBDataContext GetDBContext()
            {
                return new DBDataContext(ConfigurationManager.ConnectionStrings["school"].ConnectionString);
            }       
        }
    }
    

    第五步:

    新建网站,引用类库linqtosql,同时添加System.Data.Linq.dll和NVelocity.dll类库(可以在官网http://nvelocity.codeplex.com/下载)。

    新建如下文件夹:

    ClassView类用于取数据,Template文件夹下为静态模板。如下:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <meta name="description" content="">
     6     <meta name="keywords" content="">
     7     <title>$Title</title>   
     8 </head>
     9 
    10 <body>
    11   <table>
    12     #foreach($item in $ClassView.GetList(30))
    13     <tr><td>$item.Id</td><td>$item.Name</td></tr>
    14     #end
    15   </table>
    16 </body>
    17 </html>

    可以看出其中标记了一些NVelocity模板引擎的语法。

    第六步:

    清空aspx页面中的html代码,只保留第一行声明。如图:

    第七步:

    在aspx.cs页面中做如下处理:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.UI;
     6 using System.Web.UI.WebControls;
     7 //
     8 using Commons.Collections;
     9 using NVelocity;
    10 using NVelocity.App;
    11 using NVelocity.Runtime;
    12 using System.Configuration;
    13 using System.Runtime.Remoting.Contexts;
    14 using NVelocity.Context;
    15 using System.IO;
    16 public partial class ClassList : System.Web.UI.Page
    17 {
    18     protected void Page_Load(object sender, EventArgs e)
    19     {
    20 
    21         //1.创建VelocityEngine实例对象
    22         VelocityEngine engine = new VelocityEngine();
    23 
    24         //2.读取模板路径,可以定义几套模板利于动态换肤
    25         string templateRoad = ConfigurationManager.AppSettings["tmpDir"];
    26 
    27         //3.使用设置初始化VelocityEngine
    28         ExtendedProperties props = new ExtendedProperties();
    29         props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
    30         props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
    31         props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
    32         props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Server.MapPath(templateRoad));
    33         engine.Init(props);
    34 
    35         //4.模板引擎从文件中读取模板
    36         Template tmp = engine.GetTemplate(@"class_tmp.vm");
    37 
    38         //5.为模板变量赋值
    39         IContext context = new VelocityContext();
    40         context.Put("Title", "first nvelocity");
    41         context.Put("ClassView",new ClassView());
    42 
    43         //6.合并模板和流写出器
    44         StringWriter write = new StringWriter();
    45         tmp.Merge(context, write);
    46         Response.Write(write.ToString());
    47         
    48     }
    49 }

    第八步:

    结果如下:

    (三)总结

    这里面的东西其实还有很多,这里我也是刚刚了解………………

  • 相关阅读:
    tensorflow 查看模型输入输出saved_model_cli show --dir ./xxxx --all
    tensorflow models api:ValueError: Tensor conversion requested dtype string for Tensor with dtype float32: 'Tensor("arg0:0", shape=(), dtype=float32, device=/device:CPU:0)'
    python,ModuleNotFoundError,is not a package
    在docker集群下,使用VNC,物理机器重启后VNC失败解决
    2、闵氏空间
    1、爱因斯相对论(狭义相对论)
    tensorflow object detection api graph rewriter
    tensorflow_目标识别object_detection_api,RuntimeError: main thread is not in main loop,fig = plt.figure(frameon=False)_tkinter.TclError: no display name and no $DISPLAY environment variable
    目标检测识别在排除标注不标准问题下,为什么得分最高的框,不一定是最准的框.
    JS中各种变量类型在条件判断为false的情况
  • 原文地址:https://www.cnblogs.com/eggTwo/p/3822471.html
Copyright © 2020-2023  润新知