Razor入门
一、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入门的更多相关文章
- 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 ...
- 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 ...
- ASP.net MVC入门及Razor语法
一.MVC入门: 1.MVC简介 约定大于配置 2.MVC访问流程 csthml模板(razor模板)就是简化HTML的拼接的模板,最终还是生成html给浏览器显示,不能直接访问cshtml文件. 二 ...
- ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)
引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...
- MVC Razor视图引擎的入门
首先我们来说说他的给我们开发者带来那些好处吧: Razor语法易于输入,易于阅读,微软当时是这样定义的:简洁,富有表现力和灵活性,支持所有文本编辑器,强大的智能提示功能,单元测试. Rozor文件类型 ...
- .Net MVC 入门之Razor语法
Razor语法 Razor是以后MVC项目中都需要用的, 所以在学MVC的基础的时候,我们的目标:要了解熟悉Razor页面的语法结构,做到灵活使用,so我们马上开始学习Razor,也请你们多评论和推荐 ...
- .net core 2.1 Razor 超快速入门
以下过程如有不明白的,可参考:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/?view=aspnetcore-2 ...
- 使用VSCode创建简单的Razor Webapp--1.入门
1.下载vscode,安装dotnet core sdk 在cmd中使用命令dotnet --version可以查看当前安装的版本 2.打开vscode,设置语言和扩展 在最左边的工具栏,点击最下面的 ...
- ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)
https://blog.csdn.net/qq_21419015/article/details/80451895 1.准备示例项目 为了演示Razor,使用VS创建一个名称为“Razor”的新项目 ...
随机推荐
- NOIP2008普及组题解
NOIP2008普及组题解 从我在其他站的博客直接搬过来的 posted @ 2016-04-16 01:11 然后我又搬回博客园了233333 posted @ 2016-06-05 19:19 T ...
- groovy-实现接口
Groovy提供了一些非常方便的方法来实现接口 使用闭包实现接口 只有一个方法的接口可以使用闭包来实现,例如 1 // a readable puts chars into a CharBuffer ...
- 增强型for循环,用于遍历数组元素
/** * */ package com.cn.u4; /** * @author Administrator *增强型for */ public class ZhengQiangFor { publ ...
- udp 内网穿透 互发消息
还差实现内网终端,向服务器发送请求,要对方的内网连接自己,实现打洞.在同一网段,或者公网运行,可以相互聊天. 没有实现检测客户端下线功能. 1,服务器代码 package router; import ...
- Ubuntu学习总结-03 安装软件 & 技巧
1 UBuntu 安装 Googole Chrome 首先下载软件 wget https://dl.google.com/linux/direct/google-chrome-stable_curre ...
- Nagios配置和命令介绍(二 )
Nagios配置 Nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源及对外的服务等.默认的Nagios 配置没有任何监控内容,仅是一些模板文件.若要让Nagios 提供服务, ...
- aapt aidl
AIDL:Android Interface Definition Language,即Android接口定义语言 aapt即Android Asset Packaging Tool,在SDK的bui ...
- ExtJS入门教程04,这是一个超级好用的grid
今天进行extjs入门教程的第四篇:grid. 来一份grid尝尝 小伙伴们都知道extjs的grid功能强大,更清楚功能强大的东西用起来必然会复杂.今天我们就从最简单的grid开始讲解. 先来一个最 ...
- JSP 使用
JSP教程: http://www.w3cschool.cc/jsp/jsp-tutorial.html jsp语法: 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依 ...
- spring 标注 详解
http://snowolf.iteye.com/blog/578452 http://snowolf.iteye.com/blog/578452 非常棒的入门读物