2009-05-18 16 views
5

Ben vb ASP.net bir asp.net mvc projesinde çalışırken hafta sonu boyunca garip bir konuya koştu. Tamsayı ile ilişkili bir ayın dönüştürülmesi için bir uzantı yöntemi oluşturdum. Bir konsol uygulamasında uzantı yöntemini test ettim, bu yüzden çalıştığını biliyorum.VB.NET Uzantı Metodu ASP.NET MVC kullanarak görüntüleme MVC

Asp.net mvc projemde bir görünüm var ve uzantı yöntemini aramak istiyorum ancak uzantı yönteminin tanınmadığı konusunda bir hata alıyorum. İçerdiği isim alanını aldım ve hatayı hala sallayamadım. Ne olduğuna dair bir fikrin var mı? Benim kodum yanımda değil, ama eğer yardım ederse bu geceyi yayınlayabilirim. Teşekkürler!

Uzatma Yöntemi:

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 

Görünüm:

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

Hata geçerli:

Jon

cevap

11

Modülünüzü Genel olarak bildirdiğinizden emin olun.

+0

Bu konuda çok fazla zaman kaybettim. Bunu kendi başıma düzelttim ve sonra bunu okudu. +1 –

2

kod muhtemelen yardımcı olacaktır "ConvertToMonth Sayısının üye değildir", Ancak, uzantı yönteminin doğru şekilde içe aktarılmış hali gibi görünmüyor. Uygulamanızla aynı ad alanını vermeyi deneyebilirsiniz. Veya uzantının ad alanını System.Web.Mvc olarak değiştirin, çünkü ad alanının çalıştığını biliyoruz ve oradan çıkış yolunu geri alıyoruz.

+0

Teşekkür! Dün gece makinemi açtığımda anakartım öldüğü için test edemedim. Bugün veya yarın da olsa düzeltilmeli ve önerinize bir şans vereceğim, teşekkürler! – Jon

4
böyle kodunu değiştirmek

: Yanıtınız için

Public Module SiteExtensions 

End Module