【发布时间】:2014-10-19 17:40:28
【问题描述】:
我正在使用 VB.NET 和 EF 6 开发一个 MVC 5 项目。我添加了一个依赖于自定义全局帮助程序的 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 年。
如何同时使用?我已经走到了尽头,对 Microsoft 的支持/文档失去了信心。
【问题讨论】:
-
谁对这个问题投了反对票和近距离投票。非常感谢您提供一些见解,说明为什么这不是一个有效的问题,或者为什么您认为它应该被删除。而不是进一步试图阻止我在没有提供理由的情况下找到解决方案。
-
您是否尝试过首先在自己的库中而不是 App_Code 中编译您的帮助程序?我是用 VBnet 编写的所有者助手,但没有看到这个问题。然而,我在我编译的单独项目中有我的助手。
-
不,我没试过这个。我是否将它们添加到单独的类库项目中,然后从解决方案和 web.config 中引用它们?除此之外,我还有什么需要注意的吗?干杯,马特。
-
我设法找到了解决方案/解决方法。我要清理一下,找出我到底做了什么来修复它,然后我会发布解决方案。
-
是的,你可以创建一个单独的项目来保存你的助手,编译,然后添加引用,你应该很高兴。
标签: c# asp.net asp.net-mvc vb.net asp.net-mvc-5