ASP.NET Core 使用Razor code blocks替代@helper
@helper 是 ASP.NET Razor 视图引擎的一种语法,它允许你在 Razor 视图中定义和使用自定义 HTML 帮助程序。这些帮助程序可以被多次调用,以生成复杂的 HTML。
在ASP.NET MVC中可以使用@helper定义一个返回IHtmlString的方法。 当我们在页面上需要重复输出一些HTML时,并且仅作用在当前页面上时,@helper很有用。但是在把.NET Framework的网站改成.NET Core的时候发现.NET Core已经不支持@helper了。
在Github上看到https://github.com/aspnet/Razor/issues/281 Remove the @helper directive from Razor
从微软官网查到了现在@helper已经被Razor code blocks替代了。
https://learn.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-3.1#razor-code-blocks
Razor 代码块(Razor code blocks)以@开头,由{}括起。与表达式不同,代码块中的 C # 代码不会呈现。视图中的代码块和表达式共享相同的作用域,并按以下顺序定义:
@{
var quote = "The future depends on what you do today. - Mahatma Gandhi";
}
<p>@quote</p>
@{
quote = "Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr.";
}
<p>@quote</p>
输出以下HTML的代码:
<p>The future depends on what you do today. - Mahatma Gandhi</p>
<p>Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr.</p>
在代码块中,使用标记声明局部函数作为模板方法:
@{
void RenderHtml(string title, string content)
{
<h1>@title</h1>
<p>@content</p>
}
}
@{
RenderHtml("title", "content");
}
输出以下HTML的代码:
<h1>title</h1>
<p>content</p>
注意,这里不能用@RenderHtml("title1","content1"); 输出HTML,这样VS会提示错误:
CS0029:Cannot implicitly convert type 'void' to 'object'
相关文章
- .NET C# 使用Hook钩子实现全局监听键盘和鼠标
- BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架
- .NET C#连接FTP实现文件上传下载
- ABP.Net Core使用教程(一)启动模版项目
- .NET C#中的Func、Predicate和Expression用法详解
- 5个高性能 .NET Core 图片处理库推荐
- ASP.NET如何将Views文件夹从项目分离
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- ASP.NET MVC最常用的设计模式代码示例
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- ASP.NET 中的 Session 丢失或无法保持状态
- .Net Core中Dapper的使用详解
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- Blazor 与传统 ASP.NET MVC 的对比