ASP.NET Core 使用Razor code blocks替代@helper
2023-02-13
1091 0@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'
您可能感兴趣:
阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价
领取 通义灵码 免费使用资格 基于通义大模型,提供代码智能生成、研发智能问答能力,兼容 Visual Studio Code、Visual Studio、JetBrains IDEs 等主流编程工具, 为你提供高效、流畅、舒心的智能编码体验!