1

次のコードで何が欠けているのかわかりません。(ダミーの) ヘルパー拡張機能を追加するメソッドがあります。

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

私は何を間違っていますか?

4

5 に答える 5

1

Import Namespace ディレクティブがうまくいかなかった理由はわかりませんが、追加しました

<add namespace="MyProject.HtmlHelpers"/>

web.configの<namespaces>セクションに移動すると、現在動作しています。たぶん、私がやっていたら

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

それもうまくいったでしょうか?

于 2009-07-21T12:26:25.143 に答える
0

私はちょうど解決策を見つけたと思います。

ヘルパーのモジュールはApp_Codeディレクトリにある必要があります。

于 2011-02-20T09:31:10.900 に答える
0

gfrizzle が言ったように、Views フォルダーの web.config に名前空間の参照を追加すると、ページを適切に表示できます。ただし、Intellisense を正しく機能させるには、クライアントを再起動する必要がありました。Importまた、拡張モジュールを使用してファイルに既にグローバルにインポートされている名前空間のステートメントを明示的に追加する必要もありました。

たとえば、拡張するときSystem.Web.Mvc.HtmlHelperは、次の行を追加する必要がありました

Imports System.Web.Mvc

アプリケーションが正しくコンパイルされ、名前空間がプロジェクト参照タブでチェックされているにもかかわらず、ページがエラーなしで表示されるようにするためです。

于 2014-01-25T06:56:08.800 に答える
0

拡張メソッドを使用する前に、ソリューションの再構築を試みましたか? コンパイラが拡張メソッドの存在を認識できるようにするには、VB.NET でこれを行う必要がありました。

于 2009-07-20T23:09:13.717 に答える
-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 Frameworkを4.0ではなく3.5に変更します(MVC3を無効にします)解決策4)C#でコードを記述すれば問題ありません

マルコ

于 2011-11-22T14:26:46.393 に答える