2009-05-18 6 views
5

J'ai rencontré un problème étrange au cours du week-end pendant que je travaillais sur un projet asp.net mvc sur vb.net. J'ai créé une méthode d'extension pour convertir un entier au mois correspondant auquel il est associé. J'ai testé la méthode d'extension dans une application console, donc je sais que ça fonctionne.Méthode d'extension VB.NET dans View avec ASP.NET MVC

Dans mon projet mvc asp.net j'ai une vue et je veux appeler la méthode d'extension, mais j'obtiens une erreur que la méthode d'extension n'est pas reconnue. J'ai importé l'espace de noms dans lequel il était contenu et je n'arrivais toujours pas à effacer l'erreur. Une idée de ce qui se passe? Je n'ai pas mon code avec moi, mais je peux le poster ce soir si ça peut aider. Merci!

Méthode d'extension:

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 

Vue:

<% For Each m As Integer In DirectCast(ViewData("Months"), IEnumerable)%> 
<a href="#"><%=m.ConvertToMonth()%><br /></a> 
<%Next%> 

erreur est: "ConvertToMonth est pas membre d'entier"

Jon

Répondre

11

Assurez-vous de déclarer votre module public.

+0

J'ai perdu beaucoup de temps sur ce problème. En fait, je l'ai corrigé par moi-même et ensuite lu ceci. +1 –

2

Le code serait probablement aider, mais il ne semble toujours pas que la méthode d'extension soit importée correctement. Vous pouvez essayer de lui donner le même espace de noms que votre application. Ou modifiez l'espace de nom de l'extension à System.Web.Mvc, car nous savons que l'espace de noms fonctionne, puis revenez en arrière à partir de là.

+0

Merci pour votre réponse! Je n'ai pas encore pu le tester depuis que ma carte mère est morte dès que j'ai allumé ma machine la nuit dernière. Il devrait être réparé aujourd'hui ou demain et je vais donner votre chance, merci! – Jon

4

changer le code comme ceci:

Public Module SiteExtensions 

End Module 
Questions connexes