什么是ASP.NET 5和Razor 4中@helper指令的正确替代?

时间:2015-10-27 22:23:54

标签: asp.net asp.net-mvc razor

ASP.NET 5中删除了

@helper指令和App_Code文件夹。

它主要用于抽象一些参数很少的Razor代码。 例如:

@helper Row(string label, object value, string format = "{0}")
{
    var text = string.Format(format, value);
    <tr>
        <td><p>@label</p></td>
        <td><p>@text</p></td>
    </tr>
}

并且(在我的情况下)大约有10页(报告),大约有50个帮助器作为小的漂亮构建块(如上例所示,尽管它们可能更大一些)。而且它们非常易于编写和使用以及更改参数等。

(此外,每个视图都有自己的帮助器,因此我并不真正关心App_Code文件夹,也不知道如何删除@helper指令的原因

所以我真正感兴趣的是现在使用什么作为@helper的正确替代品,即将推出的ASP.NET 5和Razor 4 ......

我看到了两个建议:

  • tag helpers
  • 查看组件

好吧,创建大约500个小类和相应的模板并通过属性传递参数根本听起来不对。使用不带模板的标签助手也需要手动粘贴字符串。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

ASP.NET 5尚未添加对Web窗体的支持。由于@helper标记通常用于ASP.NET 4 Web窗体项目,因此将来仍可以添加它。

选择

选项:

  • 创建传统的自定义HTML MVC助手(在ASP.NET 5中记录返回类型为changed
  • 创建自定义标记
  • 使用部分页面和Razor与上面的代码html片段并传递对象中的参数 e.g。

    alias
  • 或者,如果你只是调用一个传递一些参数并吐出输出的方法,你可以使用静态方法创建自己的帮助器类,但你必须连接输出字符串而不是使用Razor将html与代码混合