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”的新项目 ...
随机推荐
- 两款CSS3样式可视化在线生成工具
CSS3随着浏览器的升级已经被越来越广泛的运用,合理的运用CSS3可以使你的网站更加美观,并且之前只能用js才能实现的效果也已经可以直接用 CSS3来实现.但是虽然如此,很多浏览器对CSS3的支持还都 ...
- 登陆后淡入淡出更换rootViewController
- (void)restoreRootViewController:(UIViewController *)rootViewController { typedef void (^Animation) ...
- Web基础架构:负载均衡和LVS
在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库.缓存等等). 一.负载均 ...
- CentOS6.5安装iftop
iftop这个小工具是Linux和unix下的top命令升级版,功能相对较强,界面易懂.今天安装了CentOS6.5的最新版,装个小工具检查下系统运行性能. 官网:http://www.ex-parr ...
- Linux的一个问题ircbot进程
首先该问题目前还不清楚希望知道的人可以回复我mail fengtaotao2012x@163.com 今天执行一次常规服务器安全抽查的时候发现一台web服务器的一个奇怪的进程 而且更厉害的是cpu使用 ...
- 二分图最大匹配的König定理及其证明
二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有. 以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上 ...
- 用firebug给firefox添加信任链接
在前文“firefox查看微信公众平台的数据分析时就出现不信任链接怎么办?”我们使用了导入证书的方法添加信任链接,有网友反映说证书导入不成功,这里用另外一种方法来实现:用firebug给firefox ...
- Spring常用的接口和类(一)
一.ApplicationContextAware接口 当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口.代码展示如下: p ...
- DICOM:DICOM3.0网络通信协议(续)
转载:http://blog.csdn.net/zssureqh/article/details/44278693 题记: 近一年来一直坚持周末写博客,整理工作和闲暇之余的点点滴滴.对于新知识点.新技 ...
- cookie注入的形成,原理,利用总结
一:cookie注入的形成 程序对提交数据获取方式是直接request("c.s.t")的方式.未指明使用request对象的具体方法进行获取. 二:原理 request(&quo ...