我正在使用VB.NET和EF 6开发一个MVC 5项目。我添加了一个依赖Custom Global Helpers的EditorTemplates nuget包。
在C#中我只能在public static class
的任何地方添加新的帮助器,然后将命名空间添加到~/Views/Web.config
然后关闭。据我所知,C#和VB.NET在这方面有很大不同。
在与编译器和Stack Overflow搜索进行了多次斗争之后,我发现如果将它们放在App_Code文件夹中,我可以让自定义助手在视图中工作。
我使用了一个模块,其中<System.Runtime.CompilerServices.Extension>
属性应用于每个方法。然后添加到~/Views/Web.config
和App_code文件夹并编译。
Imports System.Web.Mvc
Public Module HtmlHelpers
<System.Runtime.CompilerServices.Extension>
Public Function HelperName(ByVal helper As HtmlHelper, hn As HelperName) As MvcHtmlString
Return MvcHtmlString.Create(hn.ToString())
End Function
End Module
这允许我使用新的自定义帮助程序,但完全阻止所有内置的html帮助程序,如DisplayFor,EditorFor和ActionLink。
如果我错了,请纠正我。除了confirming the issue之外,似乎没有关于此在线的任何文档,然后忽略它超过5年。
我如何同时使用两者?我处于束缚之中,对微软的支持/文档失去了信心。
答案 0 :(得分:2)
解决方案:
将根项目命名空间添加到〜/ Views / Web.config
<add namespace="MyProjectName" />
不会强>
<add namespace="MyProjectName.Helpers" />
<add namespace="HtmlHelpers" />
<add namespace="OrAnythingLikeThis" />
我99%肯定是这样的。我遇到了BootstrapEditorTemplates的问题,因为它们是C#,我在VB.NET中工作。为了解决这个问题,我将帮助器转换为VB.NET,并将它们全部放在〜/ Helpers /中的一个HtmlHelpers.vb文件中,与其他自定义文件一起放置。这样做可能并非都是必要的;你可以通过删除C#帮助文件中的命名空间来完成相同的操作,但我还没有测试过。
如果这不起作用,请给我一个喊(在这个问题上,而不是下午),我会回来尝试解决它。