1. ホーム
  2. asp.net-mvc-3

[解決済み] Razor のページに @using 宣言の代わりに余分な名前空間を追加する方法は?

2022-05-05 11:27:24

質問

の名前空間を取得するために必要なマジックはありますか? pages/namespaces 要素を使用することができますか?

<pages>
    <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="System.Web.WebPages"/>
        <add namespace="System.Web.Helpers"/>
        <add namespace="MyCustomHelpers"/>
    </namespaces>
</pages>

上記は、ただ はない。 は動作させたい。名前空間は問題ないことが分かっています。 @using MyCustomHelpers をページの先頭に置くと、魔法のようにうまくいくのです。

これは Html.SomeFunction() を入れなくても動作します。 @using をすべてのページの先頭に追加しました。

解決方法は?

更新情報 : MVC 3 RC に適用される、私の更新された回答をご覧ください。 Razor HtmlHelper 拡張機能 (またはビューの他の名前空間) が見つかりません。

これは、MVC 3 Preview 1 と MVC 3 Beta (本日リリース) の間で変更されました。Preview 1 では、Razor は WebForms namespaces config セクションを使用しました。しかし、ベータ版では WebForms のものとは別に、新しい config セクションがあります。Web.config ファイルに以下の項目を追加する必要があります(または、テンプレートから新しいプロジェクトを立ち上げる)。

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyCustomHelpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

備考 エディタに変更を反映させるために、一度ファイルを閉じてから再度開く必要がある場合があります。

MVC3 Beta で Razor を動作させるために web.config で必要な他の変更があることに注意してください。 ~\View\Web.config ファイルは Beta プロジェクトのテンプレートに含まれています。