返回

ASP.NET Core 使用Razor code blocks替代@helper

2023-02-13 .NET Core ASP.NET Razor code blocks @helper 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 等主流编程工具, 为你提供高效、流畅、舒心的智能编码体验!

DOVE 网络加速器 梯子 免费 试用

顶部