我需要创建自定义的html助手方法。据我所知,有两种方法:
什么解决方案更好,为什么?什么是优点和缺点?
我只读到在MVC 3中,当@helper是在单独的.cshtml文件中全局创建时,不可能使用其他内置的html帮助程序。不知道,也许在MVC 4中它是可能的。
请帮帮忙。
发布于 2013-07-23 12:49:39
什么解决方案更好,为什么?
那得看情况。
什么是优点和缺点?
@helper的优点:
@helper的缺点:
事实上,问题是@helper是完全无用的。当您想要我提到的关于自定义HtmlHelper扩展的优点时,您可以构建一个自定义HtmlHelper扩展。
如果您遇到了我提到的有关自定义HtmlHelper扩展的一些缺点,那么您可以使用部分视图。
我只读到在MVC 3中,当@helper是在单独的.cshtml文件中全局创建时,不可能使用其他内置的html帮助程序。
这是错误的。您可以很好地使用其他Html助手。您只需将它们作为参数传递:
@helper FooBar(HtmlHelper html) {
feel free to use the html helper here
}当从某种角度消费时:
@HelperName.FooBar(Html)发布于 2015-01-06 21:43:45
@helper的一个好处是,由于代码在视图中,所以无需重新编译代码就可以对其进行更改。这使您可以在开发过程中快速轻松地调整助手。出于这个原因,我个人更喜欢将标记保留在视图中(如果可能)。
@helper的一个相关好处是,您的HTML将受益于intellisense,而用C#代码编写HTML则没有这样的好处。
此外,如果您正在编写一个不打算在单个视图之外可重用的助手,那么@helper可以更容易地说明这一点。如果只有一个视图打算使用HtmlHelper扩展方法(除非您设法将其放在类和名称空间中,其中只有该视图才能看到扩展方法),那么这个扩展方法就会很混乱。
发布于 2013-07-23 12:44:51
它们可以像用户控件和自定义控件一样
在视图中使用@helper进行剃须刀样式的格式化。对一般解决方案使用扩展方法,例如重载带有附加参数的标签创建。
您可以通过示例这里找到详细的说明。
https://stackoverflow.com/questions/17805939
复制相似问题