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”的新项目 ...
随机推荐
- 【js】JSON.stringify 语法实例讲解
语法: JSON.stringify(value [, replacer] [, space]) value:是必选字段.就是你输入的对象,比如数组,类等. replacer:这个是可选的.它又分为 ...
- Bootstrap教程:[4]栅格系统详解
http://jingyan.baidu.com/article/6f2f55a1852aa1b5b83e6c5a.html 们都知道bootstrap3.0使用了四种栅格选项来形成栅格系统,这四种选 ...
- ExtJS入门教程04,这是一个超级好用的grid
今天进行extjs入门教程的第四篇:grid. 来一份grid尝尝 小伙伴们都知道extjs的grid功能强大,更清楚功能强大的东西用起来必然会复杂.今天我们就从最简单的grid开始讲解. 先来一个最 ...
- JS触发事件大全
事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown IE4.N4 按下鼠 ...
- 织梦dedecms调用子栏目的方法
织梦调用子栏目名称在栏目.文章页及首页的方法是有区别的.首页的调用方法和在栏目的调用基本是一样的,如下: {dede:channel typeid=''} <li><h3>&l ...
- jQuery中prop()函数控制多选框(全选,反选)
今天看了jQuery手册,对prop()函数又多了一点认识,记忆力不好,记录下来. prop() : 获取匹配元素集中第一个元素的值 判断checkbox中的第一个是否被选中: $(":ch ...
- java中不带package和带package的编译运行方式
Java中不带package的程序和带package的程序编译的方式是不同的. 一.不带package的程序建立个HelloWorld.java的文件,放入C:\,内容如下:public class ...
- MySql 创建只读账号
GRANT Select ON *.* TO reader@192.168.1.123 IDENTIFIED BY "123456" GRANT 可以立刻生效 在mysql 5 ...
- smarty 操作符号,大于、小于。。。
eq相等,6 w% x7 w6 |3 _ne.neq不相等,( i" }" ~( `# V( t& C, k; [gt大于,lt小于,gte.ge大于等于,lte.le 小 ...
- jQuery1.11源码分析(10)-----Callbacks模块
Callbacks模块实质上就是一个回调函数队列(当然吹得很牛逼..比如“提供了一种强大的方法来管理回调函数队列”),之所以介绍它是因为后面的Derferred模块基于它. Callbacks生成时接 ...