2009-06-18 22 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環境でのみエラーになるはずですが、正常に動作するはずです。 –

答えて

1

わからないインポートnamespaceディレクティブは、トリックをやっていなかったが、私は、web.configファイルの<namespaces>セクションに

<add namespace="MyProject.HtmlHelpers"/> 

を追加し、それが今取り組んでいる理由。多分私がした場合

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

それも同様に働いていただろうか?

0

拡張メソッドを使用する前にソリューションを再構築しましたか?私はコンパイラが自分の拡張メソッドの存在を拾うためにVB.NETでそれをしなければならなかった。

0

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

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

-2

MVC2とMVC3の両方をインストールしている可能性があります。 その場合、VB.NET Visual StudioでHTMLHelperカスタムを作成すると、エラー "YourClass"が 'System.Web.Mvc.HtmlHelper'のメンバーではありません。

しかし、ページを実行すると正常に動作します。

この

は解決策である:1) ソリューション2)をアンインストールしMVC3 ソリューション3)変更の.NETフレームワーク3.5ではなく4.0にMVC3にプロジェクトをアップグレード http://forums.asp.net/t/1694828.aspx/1

ソリューション(MVC3を無効にする) ソリューション4)ビューのフォルダ内のweb.configファイルに名前空間の参照を追加し、C#でコードを書くとgfrizzleが言ったようにあなたは何の問題

マルコ

0

を持っていませんが、ページを正しく表示することができます。しかし、Intellisenseを正しく動作させるためにクライアントを再起動する必要がありました。また、拡張モジュールを使用してファイルに既にグローバルにインポートされた名前空間に対して、Importステートメントを明示的に追加する必要がありました。例えば

は、System.Web.Mvc.HtmlHelperを拡張するとき、私は、アプリケーションが正しくコンパイルおよび名前空間が上でチェックされているという事実にもかかわらず、エラーなしで表示するページのために、ラインに

Imports System.Web.Mvc

を追加する必要がありましたプロジェクト参照タブ。

関連する問題