代码之家  ›  专栏  ›  技术社区  ›  Jon

使用ASP.NET MVC的视图中的VB.NET扩展方法

  •  5
  • Jon  · 技术社区  · 16 年前

    上周末我在VB.NET中开发ASP.NET MVC项目时遇到了一个奇怪的问题。我创建了一个扩展方法,将一个整数转换为它所关联的相应月份。我在控制台应用程序中测试了扩展方法,所以我知道它在工作。

    在我的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不是整数的成员”

    乔恩

    3 回复  |  直到 15 年前
        1
  •  11
  •   David Findley    16 年前

    确保将模块声明为公共模块。

        2
  •  4
  •   mhmd    15 年前

    按如下方式更改代码:

    Public Module SiteExtensions
    
    End Module
    
        3
  •  2
  •   Nick Berardi    16 年前

    代码可能会有所帮助,但听起来似乎您没有正确导入扩展方法。您可能想尝试给它提供与应用程序相同的名称空间。或将扩展名的命名空间更改为 System.Web.Mvc ,因为我们知道名称空间可以工作,然后从那里返回。