2009-05-18 66 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

確保您將模塊聲明爲Public。

+0

我在這個問題上浪費了很多時間。我實際上自己糾正了這個問題,之後讀了這個。 +1 – 2009-05-28 17:15:35

2

的代碼可能會有所幫助,但它聽起來仍然不像你有擴展方法正確導入。您可能想嘗試爲它提供與您的應用程序相同的名稱空間。或者將擴展的名稱空間更改爲System.Web.Mvc,因爲我們知道名稱空間的作用,然後從那裏退出。

+0

感謝您的答覆!自從昨天晚上我開機時我的主板死了以來,我一直無法對它進行測試。它應該是固定的,但今天或明天,我會給你一個鏡頭,謝謝你的建議! – Jon 2009-05-19 12:24:07

4

改變這樣的代碼:

Public Module SiteExtensions 

End Module