首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC @helper语法与Helper扩展方法

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

Stack Overflow用户
提问于 2013-07-23 09:09:17
回答 3查看 17.2K关注 0票数 7

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

  1. 使用@helper剃须刀语法。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中它是可能的。

请帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-23 12:49:39

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

那得看情况。

什么是优点和缺点?

  • 自定义HtmlHelper扩展的优点:
    • 无论您使用的是哪个视图引擎,它都会工作。
    • 它是可测试的单元
    • 它在应用程序之间可移植。

  • 自定义HtmlHelper扩展的缺点:
    • 在C#中编写大量的HTML逻辑可能会变得很麻烦。

  • @helper的优点:
    • 我从没见过,我从来没用过

  • @helper的缺点:
    • 我从没见过,我从来没用过

事实上,问题是@helper是完全无用的。当您想要我提到的关于自定义HtmlHelper扩展的优点时,您可以构建一个自定义HtmlHelper扩展。

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

我只读到在MVC 3中,当@helper是在单独的.cshtml文件中全局创建时,不可能使用其他内置的html帮助程序。

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

代码语言:javascript
复制
@helper FooBar(HtmlHelper html) {
    feel free to use the html helper here
}

当从某种角度消费时:

代码语言:javascript
复制
@HelperName.FooBar(Html)
票数 3
EN

Stack Overflow用户

发布于 2015-01-06 21:43:45

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

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

此外,如果您正在编写一个不打算在单个视图之外可重用的助手,那么@helper可以更容易地说明这一点。如果只有一个视图打算使用HtmlHelper扩展方法(除非您设法将其放在类和名称空间中,其中只有该视图才能看到扩展方法),那么这个扩展方法就会很混乱。

票数 9
EN

Stack Overflow用户

发布于 2013-07-23 12:44:51

它们可以像用户控件和自定义控件一样

在视图中使用@helper进行剃须刀样式的格式化。对一般解决方案使用扩展方法,例如重载带有附加参数的标签创建。

您可以通过示例这里找到详细的说明。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17805939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档