一、Razor简介
Razor不是编程语言,它是一种允许您向网页中嵌入基于服务器的代码的标记语法,也就是可以在html网页中嵌入的写入C#代码,Razor在VS中有自动提示,使用起来会方便一点,如下代码,循环输出i的值

<ul>
  @{
    for(int i=0;i<10;i++)
    {
      <li>@i</li>
    }
  }
</ul>

当网页被写入浏览器时,基于服务器的代码能够创建动态内容。在网页加载时,服务器在向浏览器返回页面之前,会执行页面内的基于服务器代码。由于是在服务器上运行,这种代码能执行复杂的任务,比如访问数据库。
Razor基于ASP.NET,它为web应用程序的创建而设计。它拥有传统 ASP.NET 标记的能力,但更易使用,也更易学习。

二、Razor工作流程
1.Razor读取cshtml文件(string cshtml = Razor.Parse(html, new { Name = name, Age = age });)
2.Razor会根据cshtml内容动态的生成C#代码
3.执行C#代码形成一个程序集
4.通过反射的方式执行程序集形成html代码

三、Razor使用方法(用ashx一般处理程序输出cshtml内容)
因为Razor大多是在MVC中使用,要想脱离MVC使用Razor,可以借助开源的RazorEngine.dll,就可以在控制台、winform窗体、ASP.NET中使用。
1.引用RazorEngine.dll并导入命名空间using RazorEngine;
//读取文件路径
string fillPath = context.Server.MapPath("~/Text1.cshtml");
//读取文件内容
string html = File.ReadAllText(fillPath);
//调用Razor的方法Parse
string cshtml = Razor.Parse(html, new { Name = name, Age = age });
//输出
context.Response.Write(cshtml);
2.在cshtml中调用服务器的变量
1)首先在服务器中将变量定义为全局静态的变量,如:
public static string name;
public static List<string> list = new List<string>();
2)然后在服务器的ProcessRequest方法中设置变量的值,如:
name="abcd";
list.RemoveRange(0, list.Count);//先清空,否则在客户端获取时会重复出现
list.Add("aaa");list.Add("bbb");list.Add("ccc");
3)最后在cshtml获取变量值时,先最顶部导入命名空间,再获取,如:
@using WebApplication2 //导入变量所在的命名空间,前面加@,写在最顶部
@{string str = Text1.name;} //接收变量值,用@{...},变量值写在大括号里面,变量名前面需要加上类名
//那么value="@str"就是将变量的值写入文本框中
<input type="text" name="name" value="@str" />
//如下为接收List集合

@{
  List<string> listCount = Text1.list;
}
//输出list值
for(int i=0;i<listCount.Count;i++)
{
  <li>@listCount[i]</li>
}

//获取类中的属性值
C#中代码:
public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}

string name = "syfpc";
int age = 8;
string cshtml = Razor.Parse(html, new { Name = name, Age = age });

cshtml代码:
@Model.Name
@Model.Age

//封装一个ParseRazor方法

public static string ParseRazor(HttpContext context, string cshtmlPath, object model)
{
string fullPath = context.Server.MapPath(cshtmlPath);
string cshtml = File.ReadAllText(fullPath);
string cachName = fullPath + File.GetLastWriteTime(fullPath);
string html = Razor.Parse(cshtml, model, cachName);
return html;
}

//生成一个文本框

public static RawString Text2()
{
RawString rawstring = new RawString("<input type='text' />");
return rawstring;
}

//在cshtml中调用此方法
@ProccessHelp.Text2()

//生成一个单选按钮

public static RawString CheckBox(string name, string id, bool ischecked)
{
StringBuilder sb = new StringBuilder();
sb.Append("<input type='checkbox' name='" + name + "' id='" + id + "'");
if (ischecked)
{
sb.Append("checked='checked'");
}
sb.Append("/>");
RawString rawstring = new RawString(sb.ToString());
return rawstring;
}

//在cshtml中调用此方法
@ProccessHelp.CheckBox("check","check",true)

Razor入门的更多相关文章

  1. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...

  2. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  3. ASP.net MVC入门及Razor语法

    一.MVC入门: 1.MVC简介 约定大于配置 2.MVC访问流程 csthml模板(razor模板)就是简化HTML的拼接的模板,最终还是生成html给浏览器显示,不能直接访问cshtml文件. 二 ...

  4. ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)

    引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...

  5. MVC Razor视图引擎的入门

    首先我们来说说他的给我们开发者带来那些好处吧: Razor语法易于输入,易于阅读,微软当时是这样定义的:简洁,富有表现力和灵活性,支持所有文本编辑器,强大的智能提示功能,单元测试. Rozor文件类型 ...

  6. .Net MVC 入门之Razor语法

    Razor语法 Razor是以后MVC项目中都需要用的, 所以在学MVC的基础的时候,我们的目标:要了解熟悉Razor页面的语法结构,做到灵活使用,so我们马上开始学习Razor,也请你们多评论和推荐 ...

  7. .net core 2.1 Razor 超快速入门

    以下过程如有不明白的,可参考:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/?view=aspnetcore-2 ...

  8. 使用VSCode创建简单的Razor Webapp--1.入门

    1.下载vscode,安装dotnet core sdk 在cmd中使用命令dotnet --version可以查看当前安装的版本 2.打开vscode,设置语言和扩展 在最左边的工具栏,点击最下面的 ...

  9. ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

    https://blog.csdn.net/qq_21419015/article/details/80451895 1.准备示例项目 为了演示Razor,使用VS创建一个名称为“Razor”的新项目 ...

随机推荐

  1. hihocoder 1181 欧拉路.二

    传送门:欧拉路·二 #1181 : 欧拉路·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其 ...

  2. IOS基础之 (十) 内存管理

    一 基本原理 1.什么是内存管理 移动设备的内存有限,每个app所能占用的内存是有限制的. 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用 ...

  3. 一分钟认识GitHub

    一分钟认识GitHub 机缘巧合之下,我开始使用 GitHub ,但事实上,刚刚入门的我不知道如何才能使 GitHub 发挥他的全部功能.不久之前,我偶然听了李福斯先生对 GitHub 的介绍,受益匪 ...

  4. hdu 2018 母牛的故事

    #include<stdio.h> int main(void) { int i,n,j,k; long long narr[60]; narr[1]=1; narr[2]=2; narr ...

  5. 如何设置通过ip访问数据库

    文章转自:http://blog.163.com/wz_pk007/blog/static/17062705020119242440713/ 问题:mysql只能用localhost或127.0.0. ...

  6. jquery中$.ajax

    $.ajax({ type : 'post', url : '/edm/testEmail.php', data: {tId:tId, sId:sId ,testEmail:testEmail}, d ...

  7. 把Linux安装到移动硬盘上

    把Linux安装到移动硬盘上 转载于:http://mrkh.me/install-linux-on-a-portable-hard-drive.html 这一篇文章讲一下,怎么把linux安装到移动 ...

  8. 【初级为题,大神绕道】The app icon set named "AppIcon" did not have any applicable content 错误#解决方案#

    The app icon set named "AppIcon" did not have any applicable content 错误,怎样解决   按照您的错误提示您应该 ...

  9. Y2K Accounting Bug(贪心)

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10945   Accepted: 54 ...

  10. 极客教学:如何使用树莓派击落&劫持无人机

    本教程的目的是帮助大家理解如何研究未受保护的无线通信的安全风险所在,同时我们希望大家不要对技术进行滥用.我们这里采用的例子是一个流行的无人机模型:Parrot AR.Drone 2.0. 四轴无人机能 ...