我正在将项目转换为ASP.NET核心。我需要迁移许多可重复使用的HTML帮助者,但是HTML帮助者不存在核心。
有些很复杂,有些简单。这是一个非常简单的例子:
@helper EditIcon()
{
<i class="glyphicon glyphicon-pencil"></i>
}
请注意,这只是一个例子。
Point正在为此写一个标签助手。对于部分而言。视图组件相同。
我们正在谈论一些剃刀的小片段。我最好的选择是什么?
@helper指令已删除,但是如果您可以考虑使用Func<dynamic, IHtmlContent>
,则迁移了旧版代码。这是一个示例:
@{
Func<dynamic, IHtmlContent> BrowserInfo(string btitle, string href, string imgfilename) =>
@<div style="text-align: center">
<a href="@href">
<img src="~/content/images/browsers/@imgfilename" alt="@btitle"/>@btitle</a>
</div>;
}
并像旧的辅助方法一样使用它:
@BrowserInfo("Google Chrome", "http://www.google.com/chrome/", "browser_chrome.gif")(null)
我个人认为这种方法对于小页上的小摘要更干净:
https://www.mikesdotnetting.com/article/344/what-happened-happenend-to-helpers-in-asp-net-core
[...]这些事情之一是更正式的剃须刀 帮手。您现在可以在方法的正文中包含HTML标记 在代码块中声明为本地方法,或 @Functions Block。该方法应返回void,或者任务(如果任务) 需要异步处理。这是列表助手的方式 用ASP.NET Core 3:
写
@{
void Template(string[] listItems, string style)
{
<ul>
foreach (var listItem in listItems)
{
<li class="@style">@listItem</li>
}
</ul>
}
}
并将其放置:
@{ Template(new[] { "A","B","C" }, "pretty" ); }
我已成功将ASP.NET MVC Razor助手转换为.NET Core 3.1中的指令,如下所示:
例如 ASP.NET MVC 5 @helper语法:
<div>
@RenderHello();
</div>
@helper RenderHello() {
<strong>Hello</strong>
}
等效的ASP.NET CORE 3.1 @functions指令语法:
<div>
<text>
@{
RenderHello();
}
</text>
</div>
@functions {
private void RenderHello()
{
<strong>Hello</strong>
}
}
剃须刀功能指令
- 标签助手
- 部分
- 查看组件
因此,没有简单的方法来迁移剃须刀,而无需跳过箍。
编辑
因此,毕竟可以使用HTML帮助者。他们只是没有正确记录!