2010-12-15 20 views
6

Razor'a "klasik" bir ASP.NET MVC görünümü yerleştirmeye çalışıyorum ve geleneksel (non-Razor) Html yardımcı yöntemini kullanmaya çalışırken sıkışıp kaldım. Düzenli (non-Razor) görünümlerinde kullanırkenJilet neden HTML Yardımcımı bulamıyor?

public static string WrappedValidationSummary(this HtmlHelper htmlHelper, string SummaryError) 
{ 
... 
} 

yardımcı yöntem ince işliyor: yardımcı yöntem aşağıdaki imzası vardır.

Razor kullanmadan böyle bakın:

'System.Web.Mvc.HtmlHelper' bir içermediğini

@Html.WrappedValidationSummary("Mitarbeiter konnnte nicht angelegt werden."); 

Bir çalışma zamanı hata mesajı alıyorum 'WrappedValidationSummary' tanım ve hiçbir uzantısı yöntemi 'WrappedValidationSummary 'System.Web.Mvc.HtmlHelper'tip bir ilk argüman kabulbulunamadı

Visual Studio Jilet sözdizimi denetleyicisi (eğer? Bir kullanarak emrini veya bir derleme başvurusu eksik) ve IntelliSense Uzantımın yöntemin tanımını bulmak sorun. Proje yeniden derleme yardımcı olmuyor.

Neye ters gidiyor?

cevap

18

Yardımcınızın ad alanını Views/web.config dosyanıza eklediniz mi?

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="CUSTOM_NAMESPACE" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

Bir RC kullanıyorsanız yukarıda sadece bir erken Beta iseniz, sayfanın veya Global.asax ad eklemeniz gerekir, çalışacaktır.

Ayrıca, dönüş türünü HtmlString olarak değiştirmenizi öneririm. Sadece belirli görünüm dosyası için kullanmak istiyorsanız

return new HtmlString(STRING_VALUE); 
+2

benim web.config için ad katmıştı ama jilet ad alanları için ekstra yapılandırma bölümünün farkında değildi. Önerin için teşekkürler! –

+0

Sorun değil, yardımcı olabileceğime sevindim. – kim3er

+0

Bu hala RTM için gerekli mi? Tüm Razor bitleri System.Web.Mvc düzeneğine dahil edilmiş gibi görünüyor, ancak Razor yapılandırma sınıfları orada görünmüyor. RazorWebSectionGroup için dokümanlar System.Web.WebPages.Razor.dll dosyasında olduğunu söylüyor, ancak bu topluluğu GAC'de bulamıyorum. Elbette bunun için ayrı bir mecraya başvurmanız gerekmemelidir. –

5

Alternatif Views/Web.config yerine görünümünün ilk satırında using kullanabilirsiniz.

@using your_current_web_namespace 
. 
. 
. 
@Html.WrappedValidationSummary("Mitarbeiter konnnte nicht angelegt werden.") 
+1

ad alanı benim web.configs eklemek benim için intellisense için hiçbir şey yapmadı; kullanılan ifadeyi ekleyerek çalıştı. –

+0

Belki de isim alanını Views/web.config dosyasına nasıl eklediğinizi yanlış anladı. veya ad alanını ekledikten sonra yeniden oluşturmayı deneyin. – CallMeLaNN

+3

Görünümler/Web.config dosyasına eklerseniz, çalışmasını sağlamak için Visual Studio'yu yeniden başlatmanız gerekir (Yeniden oluşturma/Temizleme sorunu çözmez). – Gabriel

İlgili konular