2009-05-18 2 views
5

Я столкнулся с странной проблемой в выходные дни, когда работал над проектом asp.net mvc в vb.net. Я создал метод расширения для преобразования целого числа в соответствующий месяц, с которым он связан. Я протестировал метод расширения в консольном приложении, поэтому я знаю, что он работает.Метод расширения VB.NET в представлении с использованием ASP.NET MVC

В моем проекте mvc asp.net у меня есть представление и вы хотите вызвать метод расширения, но я получаю сообщение об ошибке, что метод расширения не распознается. Я импортировал пространство имён, в котором оно содержалось, и по-прежнему не может встряхнуть ошибку. Любая идея, что происходит? У меня нет моего кода, но я могу опубликовать его сегодня вечером, если это поможет. Благодаря!

метод расширения:

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

ответ

11

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

+0

Я потерял много времени над этой проблемой. Я на самом деле исправил его самостоятельно, а потом прочитал это. +1 –

2

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

+0

Спасибо за ваш ответ! Я еще не смог проверить это, так как моя материнская плата умерла, как только я включил свою машину прошлой ночью. Он должен быть исправлен, хотя сегодня или завтра, и я дам ваше предложение выстрелом, спасибо! – Jon

Смежные вопросы