2009-05-18 11 views
5

vb.netのasp.net mvcプロジェクトで作業中に、週末に奇妙な問題が発生しました。私はそれが関連付けられている対応する月に整数を変換する拡張メソッドを作成しました。私はコンソールアプリケーションで拡張メソッドをテストしたので、それが動作していることを知っています。ASP.NET MVCを使用したビューでのVB.NET拡張メソッド

私のasp.net mvcプロジェクトでは、ビューがあり、拡張メソッドを呼び出すが、拡張メソッドが認識されないというエラーが出る。私はそれが含まれていた名前空間をインポートし、まだエラーを振ることができませんでした。何が起きているのか?私は私のコードを持っていませんが、もしそれが助けになるなら、私は今夜それを投稿することができます。ありがとう!

拡張メソッド:

Imports System.Runtime.CompilerServices 

Module SiteExtensions 
    <Extension()> _ 
    Public Function ConvertToMonth(ByVal monthNumber As Integer) As String 
     Dim month As String = String.Empty 
     Select Case monthNumber 
      Case 1 
       month = "January" 
      Case 2 
       month = "February" 
      Case 3 
       month = "March" 
      Case 4 
       month = "April" 
      Case 5 
       month = "May" 
      Case 6 
       month = "June" 
      Case 7 
       month = "July" 
      Case 8 
       month = "August" 
      Case 9 
       month = "September" 
      Case 10 
       month = "October" 
      Case 11 
       month = "November" 
      Case 12 
       month = "December" 
     End Select 
     Return month 
    End Function 
End Module 

ビュー:

<% For Each m As Integer In DirectCast(ViewData("Months"), IEnumerable)%> 
<a href="#"><%=m.ConvertToMonth()%><br /></a> 
<%Next%> 

エラーです: "ConvertToMonthは整数のメンバーではありません"

ジョン

答えて

11

モジュールをパブリックとして宣言してください。

+0

私はこの問題に関して多くの時間を失った。私は実際にそれを自分で修正し、その後これを読んでいます。 +1 –

2

コードおそらく役立つだろう、拡張メソッドを正しくインポートしたようには聞こえません。アプリケーションと同じネームスペースを使用してみてください。または、拡張子のネームスペースをSystem.Web.Mvcに変更します。ネームスペースが機能していることがわかっているので、そこから抜け出すことができます。

+0

感謝を!私は昨夜私のマシンをオンにするとすぐに私のマザーボードが死んで以来、まだそれをテストすることができませんでした。今日でも明日でも解決するはずです。私はあなたの提案に感謝します! – Jon

4

の変化のようなコード:あなたの応答のための

Public Module SiteExtensions 

End Module 
関連する問題