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


猜你喜欢
- 我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。假如我们现在要定义一个类来表示坐标,要求
- 在一次源码查看ThreadGroup的时候,看到一段代码,为以下:/* * @throws NullPointer
- 前言记一次为了节省代码没有在方法体中声明HttpServletRequest,而用autowire直接注入所钻的坑结论:给心急的人。 直接在
- 本文实例讲述了Android编程实现图片背景渐变切换与图层叠加效果。分享给大家供大家参考,具体如下:本例要实现的目的:1.图片背景渐变的切换
- using System;using System.Collections.Generic;using System.Data;using
- 本文实例总结了C#生成随机数的方法。分享给大家供大家参考。具体分析如下:开始,很简单地使用System.Random类来生成随机数。很快,问
- 安装配置完Java的jdk,下面就开始写第一个java程序--hello World.用来在控制台输出“Hello World”。首先,我们
- 曾经有一个朋友问过我一个问题, 一张512*512 150KB PNG格式图片和一张512*512 100KB 压缩比是8的JP
- 一、创建maven项目我使用的是汉化的idea可以选择原型,我这里没有选择输入项目名称,完成创建二、配置tomcat选择运行编辑配置点加号找
- 一、this可以代表引用类的当前实例,包括继承而来的方法,通常可以省略。public class Person{ &n
- 为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能。微信支付分为6种支付模式:1.付款
- 涉及到客户端的系统中经常需要用到比较版本号的功能,但是比较版本号又不能完全按照字符串比较的方式去用compareTo之类的方法;这就需要我们
- 开始学习WebSocket,准备用它来实现一个在页面实时输出log4j的日志以及控制台的日志。首先知道一些基础信息:1.java7 开始支持
- TCP和UDP在网络传输中非常重要,在Android开发中同样重要。首先我们来看一下什么是TCP和UDP。什么是TCP?TCP:Transm
- 前言C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加
- 对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种使用 spring-session 它可以把 se
- 引言CardView是Android 5.0系统之后引入的众多控件之一,实现之后的效果也是比较酷的,它经常被用在RecyclerView和L
- 这篇文章主要介绍了Spring Boot项目维护全局json数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- Android init.rc文件详解本文主要来自$ANDROID_SOURCE/system/init/readme.txt的翻译.1 简
- 一、安装JDK1.卸载旧版本或者系统自带的JDK(1)列出所有已安装的JDKrpm -qa | grep jdk(2)卸载不需要的JDKyu