2009-05-18 4 views
5

vb.net에서 asp.net mvc 프로젝트를 작업하는 동안 주말 이상한 문제가 발생했습니다. 내가 연결된 월에 정수를 변환하는 확장 메서드를 만들었습니다. 콘솔 응용 프로그램에서 확장 메서드를 테스트하여 작동하는지 확인했습니다.ASP.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%> 

오류는 다음과 같습니다

답변

11

모듈을 공개로 선언했는지 확인하십시오.

+0

이 문제에 대해 많은 시간을 보냈습니다. 나는 실제로 그것을 독자적으로 교정했고 나중에 이것을 읽었다. +1 –

2

코드는 아마 도움이 될 것이다 "ConvertToMonth는 정수의 멤버가 아닙니다" 하지만 확장 메서드를 올바르게 가져온 것처럼 소리가 나지 않습니다. 응용 프로그램과 동일한 네임 스페이스를 지정하려고 할 수 있습니다. 또는 네임 스페이스가 작동하는 것을 알고 있으므로 확장명의 네임 스페이스를 System.Web.Mvc으로 변경 한 다음 거기에서 나가십시오.

+0

감사합니다! 어젯밤에 컴퓨터를 켜 자마자 마더 보드가 죽은 이후에 아직 테스트 할 수 없었습니다. 오늘이나 내일에도 문제가 해결되어야하며 제안 사항을 알려 드리겠습니다. 감사합니다! – Jon

4
은 다음과 같이 코드를 변경

: 당신의 응답을

Public Module SiteExtensions 

End Module