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'
相关文章
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- 微软发布VS Code AI工具包,集成多模型AI能力
- .NET9 C# 13 有哪些新特性?
- .NET9 开始删除内置的 Swagger 支持 可使用Scalar.AspNetCore替代
- .NET 9 中System.Text.Json 的新增功能
- 什么是.NET渐进式Web应用(PWA)
- .NET9在ASP.NET MVC有什么更新?
- .NET开发中常见的异常报错原因和解决方法?
- .NET框架和CLR的工作原理?
- ASP.NET MVC与Web Forms的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- 使用ADO.NET连接到南大通用GBase 8s数据库
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- .NET Framework被淘汰了吗?