ASP.NET Core 的 Razor 语法

news/2025/2/15 16:23:21/文章来源:https://www.cnblogs.com/tianma3798/p/18717106

一、ASP.NET Core 的 Razor 语法、Razor视图引擎

Razor 是一种标记语法,用于将基于 .NET 的代码嵌入网页中。 Razor 语法由 Razor 标记、C# 和 HTML 组成。 包含 Razor 的文件通常具有 .cshtml 文件扩展名。

也可在 Razor 文件 () 中找到 .razor。

Razor 语法类似于各种 JavaScript 单页应用程序 (SPA) 框架(如 Angular、React、VueJs 和 Svelte)的模板化引擎。

 

呈现 HTML
默认的 Razor 语言为 HTML。 从 Razor 标记呈现 HTML 与从 HTML 文件呈现 HTML 没有什么不同。 服务器会按原样呈现 .cshtml

 

二、Razor 语法

Razor 支持 C#,并使用 @ 符号从 HTML 转换为 C#。 Razor 计算 C# 表达式,并将它们呈现在 HTML 输出中。

当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记。 否则会转换为纯 HTML。

若要对 @ 标记中的 Razor 符号进行转义,请使用另一个 @ 符号:

<p>@@Username</p>

隐式 Razor 表达式

隐式 Razor 表达式以 @ 开头,后跟 C# 代码:

<p>@DateTime.Now</p>
<p>@DateTime.IsLeapYear(2016)</p>

显式 Razor 表达式

@(  )

@{  }

显式 Razor 表达式由 @ 符号和平衡圆括号组成。

<p>Last week this time: @(DateTime.Now - TimeSpan.FromDays(7))</p>
@{var joe = new Person("Joe", 33);
}<p>Age@(joe.Age)</p>
@for (var i = 0; i < people.Length; i++)
{var person = people[i];<text>Name: @person.Name</text>
}
@if (value % 2 == 0)
{<p>The value was even.</p>
}
else if (value >= 1337)
{<p>The value is large.</p>
}
else
{<p>The value is odd and small.</p>
}

 

表达式编码

计算结果为字符串的 C# 表达式采用 HTML 编码。 计算结果为 IHtmlContent 的 C# 表达式直接通过 IHtmlContent.WriteTo 呈现。 计算结果不为 IHtmlContent 的 C# 表达式通过 ToString 转换为字符串,并在呈现前进行编码。

@("<span>Hello World</span>")

上述代码呈现以下 HTML:

&lt;span&gt;Hello World&lt;/span&gt;

 

HtmlHelper.Raw 输出不进行编码,但呈现为 HTML 标记。

 

 

三、使用部分视图

在其他视图或布局中使用 Html.Partial 或 Html.RenderPartial 方法引入部分视图:

<!-- 在视图中引入部分视图 -->
@Html.Partial("_MyPartialView")<!-- 或者使用 Razor 语法 -->
@{await Html.RenderPartialAsync("_MyPartialView");
}

 

 

四、Razor中的HTML辅助方法

Html.ActionLink
ActionLink 用于生成超链接,链接到指定的Controller和Action。
@Html.ActionLink("Click me", "About", "Home")

Html.DisplayNameFor 和 Html.DisplayFor
这对方法用于显示模型的属性名和属性值。
@Html.DisplayNameFor(model => model.Name)
@Html.DisplayFor(model => model.Name)

Html.EditorFor 和 Html.TextBoxFor
用于生成文本框,EditorFor 会根据模型类型选择适当的编辑器。
@Html.EditorFor(model => model.UserName)
@Html.TextBoxFor(model => model.UserName)
等等

 

更多:

ASP.NET Core MVC的Areas使用整理

ASP.NET Core MVC的Razor视图渲染中文乱码的问题

Asp.Net Core 如何获取IWebHostEnvironment

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/884297.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Markdown常用语法整理

Markdown常用语法整理 一、标题 h1 一级标题下面加=== h2 二级标题下面加--- h3 h4 h5 二、文字高亮这段文字将被高亮显示...三、插入链接或者图片 链接是前面中括号后面小括号:点击跳转百度图片是链接前面加感叹号:四、列表 无序列表(*或+或-),如:黄瓜 玉米 茄子黄瓜 玉…

P1121 环状最大两段子段和

链接 https://www.luogu.com.cn/problem/P1121 题目思路这个O(n)的思路很好:https://www.cnblogs.com/kamimxr/p/11438701.html。 关键思路: 答案分两种情况,一种是选择的两段均不跨越n到1(也就是环),另一种是选择的两段跨过了环; 如果均不跨越环,那么也就是意味着这是一道…

muduo网络库核心代码阅读(Thread,EventLoopThread,EventLoopThreadPool)(4)

muduo网络库核心设计为one loop one thread,即一个线程一个事件循环。其中,主Reactor负责监听新连接,并将新连接平均分配到从Reactor中,而从Reactor则对分配到其上的用户进行io交互,接收并处理用户发来的数据,包括消息的回复(实际上,在使用中需要手动设置Reactor线程的…

C#生成多尺寸bmp格式ICO图标代码

代码取自deepseek,且已经过本地执行测试 //.cs 文件类型,便于外部编辑时使用 // 引用必要的命名空间 using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Runtime.InteropServices;/…

CTA:回测执行引擎BacktestingEngine

回测执行引擎BacktestingEngine 回顾前面的文章CTA:回测综述,那里提到,真正执行回测的逻辑,写在BacktestingEngine中。 代码解读 BacktestingEngine定义在vnpy_ctastrategy -> backtesting.py中。 package from collections import defaultdict from datetime import da…

CTA:回测快速示例

设置工作目录 VNPY程序启动后,会产生一个工作目录,程序运行产生的数据、系统配置都会放在指定的.vntrader目录当中。 这一设置在vnpy -> utility.py -> _get_trader_dir函数中可以找到,工作目录由TRADER_DIR, TEMP_DIR确定。 def _get_trader_dir(temp_name: str) -&g…

VNPY体系结构

整体架构每个层次的模块只调用下层功能,并对上层提供接口。接口层负责对接行情和交易API,将行情数据推送到系统,发送交易指令。 引擎层向下对接交易接口、数据库,向上服务于各种上层应用。 应用层主要是面向用户的可视化界面,这一部分的代码主要为引擎功能与界面的连接。功…

【ABP】项目示例(2)——聚合根和实体

聚合根和实体 在上一章节中,已经完成了项目搭建的前置准备,在这一章节中,实现领域层的聚合根和实体 创建名称为General.Backend.Domain的标准类库,分别新建名称为Entities、Services、IRepositories和Specifications的文件夹,用于存放实体和聚合根、领域服务、仓储接口和规…

P1896 [SCOI2005] 互不侵犯(状态压缩)

位运算符好麻烦,没打括号被卡了半天 #include<iostream> #define int long long using namespace std; int f[12][100][1<<11]; int s[1<<11]; int num[1<<11]; signed main(){int n,k;cin>>n>>k;int cnt=0;for(int i=0;i<(1<<…

200N03-ASEMI豆浆机专用MOS管200N03

200N03-ASEMI豆浆机专用MOS管200N03编辑:ll 200N03-ASEMI豆浆机专用MOS管200N03 型号:200N03 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:200A 漏源击穿电压:30V RDS(ON)Max:1.8mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:…