2009-06-18 62 views
1

我找不出在下面的代码中缺少的内容。我有一个应该添加一个(假)辅助扩展的方法:无法在VB MVC应用程序中创建HtmlHelper方法

Imports System.Runtime.CompilerServices 

Namespace HtmlHelpers 

    Public Module HelpExtensions 

     <Extension()> _ 
     Public Function HelpMe(ByVal HtmlHelper As HtmlHelper) As String 
      Return "<a>HELP</a>" 
     End Function 

    End Module 

End Namespace 

我的看法是这样的:

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<%@ Import Namespace="HtmlHelpers" %> 
<asp:Content ID="indexContent" ContentPlaceHolderID="body" runat="server"> 
    <%=Html.HelpMe()%> 
</asp:Content> 

但是这给了我以下错误:

'HelpMe' is not a member of 'System.Web.Mvc.HtmlHelper'. 

我在做什么错?

+0

这应该只是在VS环境中的一个错误,但它应该运行良好,我们一直这样做。 – 2015-08-22 12:44:01

回答

1

不知道为什么导入namespace指令没有做的伎俩,但我加

<add namespace="MyProject.HtmlHelpers"/> 

到web.config中的<namespaces>部分,它的工作现在。也许如果我已经完成

<%@ Import Namespace="MyProject.HtmlHelpers" %> 

它会工作以及?

0

在尝试使用扩展方法之前,您是否尝试过重建解决方案?我必须用VB.NET来做到这一点,以便编译器能够找到我的扩展方法。

0

我想我只是找到了解决方案。

您的帮手的模块需要位于App_Code目录中。

-2

问题可能是您已经安装了MVC2和MVC3。 如果是这样,当您使用VB.NET Visual Studio编写HTMLHelper自定义时抛出广告错误“YourClass”不是“System.Web.Mvc.HtmlHelper”的成员。

但是,如果你运行该页面,它工作正常。

这是解决方案: http://forums.asp.net/t/1694828.aspx/1

解决方案1)升级项目MVC3 解决方案2)卸载MVC3 解决方案3)更改.NET框架3.5,而不是4.0(禁用MVC3) 解决方案4)写C#代码,你将不会有任何问题

马尔科

0

正如gfrizzle说,命名空间参考Views文件夹中的web.config允许页面正常显示。但是,我必须重新启动客户端才能使Intellisense正常工作。我还必须明确地添加Import语句,用于已经全局导入到带有扩展模块的文件的名称空间。

例如,延长System.Web.Mvc.HtmlHelper,当我不得不添加行

Imports System.Web.Mvc

为了使页面显示没有错误,尽管应用程序正确编译和命名空间所检查的事实项目参考选项卡。

相关问题