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

5
我在周末处理一个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不是Integer的成员"
Jon
3个回答

11

请确保将您的模块声明为公共模块。


我在这个问题上浪费了很多时间。实际上我自己纠正了它,然后才读到这篇文章。+1 - Dragoljub Ćurčić

4

将代码更改为以下内容:

Public Module SiteExtensions

End Module

2

代码可能会有帮助,但是听起来好像您还没有正确导入扩展方法。您可以尝试将其命名空间与应用程序相同。或者将扩展的命名空间更改为 System.Web.Mvc,因为我们知道该命名空间可行,然后再从那里开始逐步退回。


谢谢您的回复!昨晚我打开电脑后,主板就坏了,所以我还没有能够测试它。不过今天或明天应该会修好,然后我会尝试您的建议,谢谢! - Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接