不能创建在VB MVC应用程序的HtmlHelper方法(Can't create Html

2019-06-23 14:26发布

我想不出什么我缺少在下面的代码。 我有一个应该添加一个(假)辅助扩展的方法:

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'.

我究竟做错了什么?

Answer 1:

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

<add namespace="MyProject.HtmlHelpers"/>

<namespaces> web.config中的部分,它的工作现在。 也许,如果我做了

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

它会工作呢?



Answer 2:

您是否尝试过尝试使用扩展方法之前重建你的解决方案? 我不得不这样做与VB.NET为了使编译器拿起我的扩展方法存在。



Answer 3:

我想我只是找到了解决办法。

你的助手的模块需要在App_Code目录中。



Answer 4:

作为gfrizzle说,命名空间参考Views文件夹中的web.config允许页面正常显示。 但是,我不得不重新启动客户端,以获得智能感知正常工作。 我也不得不明确增加Import对那些已经在全球进口与扩展模块的文件命名空间的语句。

例如,当扩展System.Web.Mvc.HtmlHelper我不得不添加行

Imports System.Web.Mvc

为了,该页面显示没有错误,尽管该应用程序正确编译和命名空间的项目引用选项卡上选中的事实。



Answer 5:

这个问题可能是你已经安装了MVC2和MVC3。 如果是这样,当你写VB.NET与Visual Studio的罚球广告错误“YourClass”一个自定义的HtmlHelper不是“System.Web.Mvc.HtmlHelper”中的一员。

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

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

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

马尔科



文章来源: Can't create HtmlHelper methods in VB MVC app