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