ASP.NET Core 的 Razor 语法

一、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

 

posted @   天马3798  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2015-02-15 鼠标滚轮(mousewheel)和DOMMouseScroll事件
2015-02-15 JS滚轮事件(mousewheel/DOMMouseScroll)了解
点击右上角即可分享
微信分享提示