ViewBag
はタイプであるため、dynamic
最初に適切なタイプにキャストしない限り、拡張メソッドはそのプロパティで取得されません。
例えば:
@(((string)ViewBag.stringProperty).Trunctate())
個人的には、 (他の理由の中でもViewBag
)どこにでもキャストする必要がないように、の使用を制限しています。代わりに、ビューごとに強く型付けされたビューモデルを使用します。
完全を期すために、拡張機能を含む名前空間がビューで参照されていない場合にも、このエラーが発生する可能性があります。
ビューフォルダにあるweb.configに名前空間を追加できます。
次のセクションに名前空間を追加します。
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="MyProject.Extensions" />
</namespaces>
</pages>
</system.web.webPages.razor>
または、かみそりビュー自体に名前空間をインポートすることもできます。
@using MyProject.Extensions