C#中Razor模板引擎简单使用
作者:Mr.?Hu 发布时间:2022-01-21 10:04:13
使用视图引擎可以完成一些需要定制化内容格式的问题,比如邮件模板。
引用
install-package RazorEngine
使用
public class TestDemo
{
private string name;
public int Age { get => age; set => age = value; }
public string Name { get => name; set => name = value; }
private int age;
}
string template = @"
@if(Model!=null){
foreach(var item in Model){
<text>姓名:@item.Name,年龄:@item.Age</text>
}
}else{
<text>没有数据</text>
}
";
var data = new List<TestDemo>() {
new TestDemo(){Name="张三",Age=10 },
new TestDemo(){Name="张四",Age=11 },
new TestDemo(){Name="马武",Age=30 }
};
var html= Razor.Parse(template, data);
//输出
//姓名:张三,年龄:10
//姓名:张四,年龄:11
//姓名:马武,年龄:30
var html1 = Razor.Parse(template, null);
//输出
//没有数据
补充:下面看下Razor模板引擎(C#版)语法
Razor模板引擎语法
1、简介:
Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中。
基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容。当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行,代码能执行复杂的任务,比如进入数据库。
Razor 是基于 ASP.NET 的,是为创建 Web 应用程序而设计的。它具有传统 ASP.NET 的功能,但更容易使用并且更容易学习。
2、原理:
Razor 是一种将服务器代码嵌入在网页中的简单的编程语法。
Razor 语法是基于 ASP.NET 框架,专门用于创建 Web 应用程序的部分 Microsoft.NET 框架。
Razor 语法支持所有 ASP.NET 的功能,但是使用的是一种简化语法,对初学者而言更容易学习,对专家而言更有效率的。
Razor 网页可以被描述成带以下两种类型内容的 HTML 网页: HTML 内容和 Razor 代码。
当 服务器读取页面时,它首先运行 Razor 代码,然后再发送 HTML 页面到浏览器。在服务器上执行的代码能够执行一些在浏览器上不能完成的任务,比如,访问服务器数据库。服务器代码能创建动态的 HTML 内容,然后发送到浏览器。从浏览器上看,服务器代码生成的 HTML 与静态的 HTML 内容没有什么不同。
3、语法规则:
Razor 代码块包含在 @{ ... } 中 。 (和asp的<% %>相似),注意代码块中除了C#代码,html也是允许的
内联表达式(变量和函数)以 @ 开头 (html中引用变量、对象需要使用@引用)
代码语句用分号结束
变量使用 var 关键字声明 (类型推断)
字符串用引号括起来
C# 代码区分大小写
C# 文件的扩展名是 .cshtml
语法补充:
1、if for foreach while 都是代码块 ,用@if{} @for(){} 使用 ,或者放在代码块中使用 @{ if(){} }
2、读取用户输入:Request[] ;数据转换: AsInt()、AsDecimal()等
代码块中输出非html和非变量内容:<text>我是要输出的内容</text> 或: @:我是要输出的内容 (内容里也可以输出变量 @变量名)
代码块中输出内容:同在html中 使用 @变量名(不需要冒号)
在调用 返回IHtmlString类型的方法不需要“;”,也不需要在代码块中。如:@RenderPage() 、 @Html.Partial()等
只有在代码块中{}使用C#代码需要“;” 类似@RenderPage("~/Views/Shared/PartialOne.cshtml", new {lxf= "小飞哥"})这样输出内容的方法后面不需要加“;”
html中输出变量 如:@a 在@a前后如有内容时请加上括号: @(a)
来源:https://www.cnblogs.com/huhangfei/p/8917326.html
猜你喜欢
- 文章来源:aspcn 作者:孙雯重复和并发服务器这个应用程序被当作一个重复的服务器.因为它只有在处理完一个进程以后才会接受另一个连接.更多的
- C#移除字符串中的不可见Unicode字符 背景最近发现某个数据采集的系统拿下来的数据,有些字段的JSON被莫名截断了,导致后续数
- Feign获取异常信息最近在使用Feign调用时,出现了异常,原本使用的是fallback,直接返回了自定义的结果@Override &nb
- 这篇文章主要介绍了Java日期与时间类原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- NullPointerException是当您尝试使用指向内存中空位置的引用(null)时发生的异常,就好像它引用了一个对象一样。当我们声明
- Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用sc
- engine的实现结构elasticsearch对于索引中的数据操作如读写get等接口都封装在engine中,同时engine还封装了索引的
- 引言本文是关于Spark优化性能与内存使用的最佳实践,翻译整理自Tuning - Spark 3.3.2 Documentation。由于s
- DateTime dt = DateTime.Now;Label1.Text = dt.ToString();//2005-11-5 13:
- 在阿里开发手册的建表规约中有说明,数据库表中应该都要有create_time、update_time字段;那么在开发中,对于这些共有字段的处
- 什么是线程池是一种基于池化思想管理线程的工具。池化技术:池化技术简单点来说,就是提前保存大量的资源,以备不时之需。比如我们的对象池,数据库连
- 本节我们来探讨如何使用Feign构造多参数的请求。笔者以GET以及POST方法的请求为例进行讲解,其他方法(例如DELETE、PUT等)的请
- 发现了google的gson,因为之前对于protocolbuf有一些了解,带着一些好奇心,我开始使用了gson。GitHub主页:http
- 介绍这里学习SpringSecurity,对SpringSecurity进行学习。基本用法添加依赖<dependency> &n
- 本文源码:GitHub·点这里 || GitEE·点这里一、Ehcache缓存简介1、基础简介EhCache是一个纯Java的进程内缓存框架
- 持久化类Hibernate的整个概念是采取从Java类属性的值,并将持久到数据库表。一个映射文件Hibernate的帮助确定如何从拉动类的值
- 在实际业务中,当后台数据发生变化,客户端能够实时的收到通知,而不是由用户主动的进行页面刷新才能查看,这将是一个非常人性化的设计。有没有那么一
- 前言大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研、笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点
- 在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下。一:概念首先我们要知道什么是”进程”,什么是“线
- 遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。它能解决很多问题,