@helper 指令在 ASP.NET5 MVC 6 beta 4 中不再开箱即用。

@helper directive no longer works out of the box in ASP.NET5 MVC6 beta4.

自从我将我的 ASP.NET5 项目更新为 beta4(Visual Studio 2015 RC 中包含的项目)后,我的任何 Razor 视图使用助手,例如:

@helper foo()
{
   <h2>Bar</h2>
}

导致以下错误:

错误 CS0103:名称 'helper' 在当前上下文中不存在。

是否不再支持 @helper 指令?有人可以指出有关此问题的任何有用信息吗?

@helper 指令自 beta 4 以来已被删除,因为它对其他 Razor 功能施加了太多限制:https://github.com/aspnet/Razor/issues/281

编辑
需要明确的是:根据 GitHub 问题中的讨论,Microsoft 不打算在 ASP.NET 核心中恢复或替换 @helper 指令。

您可以使用带有视图模型的部分来实现相同的功能,而不是使用辅助方法。只需将相关参数传递到 Html.Partial 命令即可。

在 .Net Core 及更高版本中,您可以使用 function derivative 来达到相同的目的:

@functions {
    private void RenderFoo()
    {
        return "<h2>Bar</h2>";
    }
}

<div>From method: @{ RenderFoo(); }</div>