zoukankan      html  css  js  c++  java
  • 为什么使用Reazor

    原因:类似于前边写的模板页,自己写了。还需要用replace来替换成自己想要的变量。。

    常见的模板引擎:Razor、Nvelocity、Vtemplate。 Razor有VS自动提示,而且有助于学习asp.net mvc。(Nvelocity、Vtemplate自行学习)

    1.Nvelocity。Vemplate 语法在C#中没有自动提示。但是用着非常方便的

    2.借助于开源的RazorEngine,我们可以在非asp.net mvc项目中使用Razor引擎,甚至在控制台、WinForm项目中都可以使用Razor(自己开发代码生成器)

    3.在非mvc项目中创建Razor文件(cshtml ,可以利用自动提示)的方法,新建一个html,改名为cshtml。(需要重新打开,才有智能提示)

    4.Razor中@后面跟表达式表示在这个位置输出表达式的值,模板中Model为传递给模板的对象。

    5.@{}中为C#代码,C#代码还可以和html代码混排

    6.由于不是在MVC项目中,所以无法使用@Html.DropDownList、@Url.Encode()等。

    RazorEngine(c#语言写的)是微软做的一个开源的模板引擎,不是简单的在asp.net MVC中用,其他地方也是可以使用的。

    自己写个cshtml 步骤: 
    1。项目名字–右键—添加—新建–Razor.cshtml会有自动提示的。(推荐这种用法

    <!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>
          <ul>
        @{ 
    
            for (int i = 0; i < 10; i++)
            {
                <li>@i</li>;
            }        
         }
    
           </ul>
    
    </body>
    </html>
    

      

    2。添加对RazorEngine的引用(1.放到项目的lib文件夹中,2.右键–引用–添加引用–浏览—打开该项目的lib文件,选择RazorEngine.dll文件即可!)

    3。添加一般处理程序Razor1.ashx

    using RazorEngine;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Web;
    
    namespace Web2
    {
        /// <summary>
        /// Razor 的摘要说明
        /// </summary>
        public class Razor1 : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/html";//1。修改为html文本类型
                //2.获取模板页的路径
                string fullPath = context.Server.MapPath("~/Razor.cshtml");
    
                //3.读取出模板页中的内容
                string cshtml = File.ReadAllText(fullPath);
    
                //4.使用Razo的Parse方法转化为html文本信息
                string html = Razor.Parse(cshtml);
    
                //5.输出到浏览器端
                context.Response.Write(html);
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    

      

    修改Razor也可以读取“类”中数据,“数据库中的字段”

    using RazorEngine;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Web;
    
    namespace Web2
    {
        /// <summary>
        /// Razor 的摘要说明
        /// </summary>
        public class Razor1 : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/html";//1。修改为html文本类型
                //2.获取模板页的路径
                string fullPath = context.Server.MapPath("~/Razor.cshtml");
    
                //3.读取出模板页中的内容
                string cshtml = File.ReadAllText(fullPath);
    
                /*
                //4.使用Razo的Parse方法转化为html文本信息
                string html = Razor.Parse(cshtml);
                 */
    
                //拓展:怎么将变量传递到模板页cshtml中呢?
                //使用Razor的第二个方法
                //假设从数据库中读取的变量 name, age
    
                /*
                int age = 9;
                string name = "rupeng";
                //使用匿名类
                //var model = new { Age=age,Name=name };
                //string html = Razor.Parse(cshtml, model);
    
                //简化写
                string html = Razor.Parse(cshtml, new { Age=age,Name=name});
    
                */
                Dog dog = new Dog();
                dog.Id = 18;
                dog.Name = "哮天犬";
                string html = Razor.Parse(cshtml,dog);
    
    
    
    
                //5.输出到浏览器端
                context.Response.Write(html);
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    
        public class Dog
        { 
            public int Id{ get; set; }
            public string Name { get; set; }
        }
    
    
    }
    

      

    效果

    这里写图片描述 
    这里写图片描述 

    这里写图片描述

     

     

  • 相关阅读:
    状态模式
    迭代器模式和组合模式
    模板方法模式
    适配器模式和外观模式
    principle06
    principle05
    命令模式
    单例模式
    工厂模式
    day38(表相关内容)
  • 原文地址:https://www.cnblogs.com/guohu/p/9323692.html
Copyright © 2011-2022 走看看