2010-12-15 3 views
6

"classic"のASP.NET MVCビューをRazorに移植しようとしていて、伝統的な(面倒な)Htmlヘルパーメソッドを使用しようとしたときに立ち往生しました。ヘルパーメソッドのシグネチャは次のとおりです。Razorが自分のHTMLヘルパーを見つけられないのはなぜですか?

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

通常の(非レイザー)のビューでそれを使用するときにヘルパーメソッドが正常に動作しません。

カミソリでそれを使用して、このようなビュー:

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

私は

という実行時エラーメッセージが表示されます「System.Web.Mvc.HtmlHelper」 が含まれていません。 「WrappedValidationSummary」の定義なし 拡張メソッド 'WrappedValidationSummary「System.Web.Mvc.HtmlHelper」タイプ の最初の引数を受け付けを見つけることができ

Visual Studioでカミソリの構文チェッカーを(あなたは? usingディレクティブまたはアセンブリ 参照が不足している)とインテリセンスが私の拡張メソッドの定義を見つける問題はありません。プロジェクトの再コンパイルは役に立ちません。

何が問題になりますか?

答えて

18

Views/web.configにヘルパーの名前空間を追加しましたか?

<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> 

あなたがRCを使用している場合は、上記だけでは早期ベータ版にしている場合は、ページまたはGlobal.asaxの中に名前空間を追加する必要があります、動作します。

また、返品の種類をHtmlStringに変更することをおすすめします。あなただけの特定のビューファイルに使用したい場合は

return new HtmlString(STRING_VALUE); 
+2

私はweb.configに名前空間を追加しましたが、私はrazor名前空間の追加の設定セクションを認識していませんでした。提案していただきありがとうございます! –

+0

問題はありません。うれしく思っています。 – kim3er

+0

これはまだRTMには必要ですか?すべてのRazorビットはSystem.Web.Mvcアセンブリに含まれているようですが、Razor構成クラスは存在しないようです。 RazorWebSectionGroupのドキュメントでは、System.Web.WebPages.Razor.dllにありますが、GACでこのアセンブリが見つかりません。確かに、このために別のアセンブリを参照する必要はありません。 –

5

別の方法としては、ビュー/ Web.configファイルするのではなく、あなたのビューの1行目にusingを使用することができます。

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

私のweb.configsに名前空間を追加すると、私にとってintellisenseのための何もしませんでした。働いている使用法を追加する。 –

+0

名前空間をViews/web.configに追加する方法が間違っている可能性があります。または名前空間を追加した後に再構築を試みます。 – CallMeLaNN

+3

Views/Web.configに追加する場合は、Visual Studioを再起動して機能させる必要があります(ソリューションの再構築/クリーニングでは解決されません)。 – Gabriel

関連する問題