ASP.NET MVC@helper语法与Html helper扩展方法

本文关键字:helper 扩展 方法 Html NET MVC@helper 语法 ASP | 更新日期: 2023-09-27 18:24:17

我需要创建自定义的html助手方法。据我所知,有两种方法:

  1. 使用@helper-razor语法。http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx

  2. 创建HtmlHelper扩展方法。

什么解决方案更好,为什么?优点和缺点是什么?

我只读到在MVC 3中,当@helper在单独的.cshtml文件中全局创建时,不可能使用其他内置的html助手。不知道也许在MVC 4中它是可能的。

请帮忙。

ASP.NET MVC@helper语法与Html helper扩展方法

@helper的一个好处是,由于代码在视图中,您可以对其进行更改,而无需重新编译代码。这使您可以在开发过程中快速轻松地调整辅助对象。出于这个原因,如果可能的话,我个人更喜欢在视图中保留标记。

@helper的一个相关好处是,您的HTML将受益于intellisense,而用C#代码编写HTML则没有这样的好处。

此外,如果您正在编写一个不打算在单个视图之外重复使用的辅助对象,那么@helper可以更容易地说明这一点。如果只有一个视图打算使用HtmlHelper扩展方法,那么它将是令人困惑的(除非您设法将它放在一个类和一个命名空间中,在该命名空间中只有该视图可以看到该扩展方法)。

什么解决方案更好,为什么?

这取决于情况。

优点和缺点是什么?

  • 自定义HtmlHelper扩展的优点:
    • 无论您使用什么视图引擎,它都能工作
    • 可进行单元测试
    • 它可在应用程序之间移植
  • 自定义HtmlHelper扩展的缺点:
    • 用C编写大量HTML逻辑可能会变得麻烦#
  • @helper的优点:
    • 没见过,我从来没用过
  • @helper的缺点:
    • 没见过,我从来没用过

事实上,@helper是IMHO完全无用的。当你想要我提到的自定义HtmlHelper扩展的优势时,你可以构建一个自定义HtmlHelp扩展。

如果您遇到我提到的自定义HtmlHelper扩展的一些缺点,那么您可以使用局部视图。

我只在MVC 3中读到当@helper在separate中全局创建时.cs.html文件不可能使用其他内置的html助手。

这是错误的。您可以很好地使用其他Html助手。你只需要将它们作为参数传递:

@helper FooBar(HtmlHelper html) {
    feel free to use the html helper here
}

当从一个角度消费时:

@HelperName.FooBar(Html)

它们可以像用户控件与自定义控件

使用@helper在视图中设置剃刀样式的格式。对通用解决方案使用扩展方法,例如重载采用附加参数的标签创建。

您可以在这里找到示例的详细解释