Метод расширения VB.NET в представлении с использованием ASP.NET MVC - PullRequest
5 голосов
/ 18 мая 2009

В выходные я столкнулся со странной проблемой, когда работал над проектом asv.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 не является членом Integer»

Jon

Ответы [ 3 ]

11 голосов
/ 22 мая 2009

Убедитесь, что вы объявили свой модуль как Public.

4 голосов
/ 25 мая 2009

изменить код следующим образом:

Public Module SiteExtensions

End Module
2 голосов
/ 18 мая 2009

Код, вероятно, поможет, но он все равно не звучит так, как будто вы правильно импортировали метод расширения. Возможно, вы захотите указать ему то же пространство имен, что и ваше приложение. Или измените пространство имен расширения на System.Web.Mvc, поскольку мы знаем, что пространство имен работает, а затем вернемся оттуда.

...