我有一个用MVC2和VB.NET编写的项目。我使用了很多htmlhelper扩展方法,并且我将它们全部放在公共模块中。它们工作得很好,我可以编译并运行我的项目。我用它来引用它们所在的命名空间:
<%@ Import Namespace="MyProject.WebUI.Extensions" %>
所以,再次,他们工作得很好,我的项目运行和编译顺利。
问题是这些扩展方法中的每一种都显示为错误:
错误33'TabbedMenu'不是'System.Web.Mvc.HtmlHelper(Of Object)'的成员。 C:\ Projects \ MyProject \ MyProject.WebUI \ Views \ Shared \ Site.Master 23 21 MyProject.WebUI
这不会阻止项目编译和运行,它只会产生错误,这很烦人。我已经尝试过寻找解决方案,但我发现的所有解决方案都是针对不编译的项目,所有解决方案都使用简单的解决方案,例如引用正确的命名空间或确保您的模块被公开。有什么想法吗?
答案 0 :(得分:0)
您是否在site.Master中包含了一个import语句,以包含定义扩展名的扩展类。另外我假设你的扩展类是一个公共静态类,定义了公共静态方法?
如果你还没有检查出来,它可能与你所追求的有关。
答案 1 :(得分:0)
您需要导入放置扩展程序的命名空间。并且由于这个问题在运行时出现时有点烦人,因此可以启用view compilation让编译器检测到问题。我应该警告你,编译视图是一项耗时的操作。