Razorビューページに名前空間をインポートするにはどうすればよいですか?


回答:


852

ようやく答えが見つかりました。

@using MyNamespace

VB.Netの場合:

@Imports Mynamespace

アプリ全体に名前空間を含めたい場合は、@ ravy amiryの回答ご覧ください


4
また、コードブロックに入れることはできません。(実行時エラーが発生します)
Dan Esparza

5
また、セミコロンは必要ありません。
RPM1984、2011

5
これは単に悪い練習期間です。これをかみそりページの上部に追加しないでください。これは乱雑です...正しい方法は、@ Javad_Amiryが指摘しているように、ビューにweb.configを追加することです。
トムスティッケル2015

21
それは悪い習慣ではありません。絶対に必要な機能です。web.configは、すべてのページで名前空間をアクティブにするグローバルusingステートメントのようなものです。異なる名前空間に同じ名前のクラスがある場合、これは望ましくない場合があります。同じファイルで使用しようとすると競合が発生しますが、1つのファイル内で簡単に解決できます。web.configに貼り付けると、いずれかのクラスを使用するすべてのページで競合が発生します。したがって、この悪習を呼び出すことはまったく意味がありません。
Triynko

4
Intellisenseが通常のC#ページと同じようにusingステートメントを追加するように指示していないことに驚いています。
Triynko

397

最初の方法は、名前空間を現在のファイルのみにインポートするファイル内の@usingステートメントを使用.cshtmlし、2番目の方法は次のとおりです。

Viewsプロジェクトの「」ディレクトリにある「web.config」ファイル(プロジェクトのルートにあるメインのweb.configではないことに注意してください)で、次のセクションを見つけます。

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      .
      .
      <!-- etc -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

次のようにカスタム名前空間を追加できます:

<add namespace="My.Custom" />

これにより、すべての.cshtml(または.vbhtml)ファイルに名前空間が追加されます。次のように、ここからビューの継承を変更することもできます。

<pages pageBaseType="My.Custom.MyWebViewPage">

よろしく。


更新: @ Nick Silbersteinに感謝します。彼は言った:

エリア内で作業している場合はnamespaceWeb.config下で/Areas/<AreaName>/Views/はなく 下にを追加する必要があります/Views/


10
@vtortola:どのweb.config?ルートフォルダのメインのweb.configではなく、Viewsフォルダのweb.configファイル。OK?
レイビーアミリー

9
うまくいけば、誰かが髪を抜く数分を節約し、エリア内で作業している場合は、/ではなく/ Areas / <AreaName> Views /の下のWeb.configに名前空間を追加する必要があると言いたいビュー/。
Nick Silberstein

11
@MatthijsWesselsいいえ、VSを再起動する必要はありません。プロジェクトをビルドするだけで有効になります。少なくとも私はいつもこうしています。ビューが開いている場合は、ビルドする前にそのビューを閉じ、ビルド後に再度開く必要があります。
レイビーamiry

2
@Javad_Amiry、ああ、私は再構築しましたが、ビューを閉じませんでした。
Matthijs Wessels

1
はい、これは正しい方法です。.... OP選択した答えのようにカミソリページの上部にあるステートメントを使用していない
トムStickel

30

図書館向け

@using MyNamespace

モデル用

@model MyModel

1
なぜないのですか?最後に?
FrenkyB 2016年

2
@FrenkyBこれはC#コードではないため、Razorコードです。using.csファイルの先頭には、C#コンパイラキーワードです。@using.cshtmlファイルの先頭には、カミソリのテンプレートエンジンへのヒントです。
マーク

27

ASP.NET MVC 3 Preview1では、Global.asax.csのこのコードを使用して、すべてのかみそりビューに名前空間をインポートできます

Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");

私はRTMでこれがWeb.configセクションを通じて行われることを願っています。


6
RTMにはweb.configセクションがありますが、多くのユーザーがconfigから引き離され始めているため、これを行うためのAPIも提供したいと考えました。したがって、両方のオプションが利用可能です!
Andrew Stanton-Nurse

6
ASP.NET MVC 3 Beta以降、この方法は機能しなくなりました。ここで説明されているように、新しいweb.configセクションがあります。stackoverflow.com/ questions / 3875207 /…。すべてのビューにグローバル名前空間をインポートするためのAddGlobalImportメソッドは、このクラスSystem.Web.WebPages.Razor.WebPagesRazorHostに移動されました
ヘルマン・

16

私はこのhttp://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspxを見つけましたこれは、カスタム名前空間をすべてのかみそりページに追加する方法を説明しています。

基本的にこれを作ることができます

using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
   public static void InitializeApplication()
   {
       CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
   }
}

次のコードをAssemblyInfo.csに挿入します

[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]

メソッドInitializeApplicationは、global.asaxのApplication_Startの前に実行されます。


4
これは実際にはかなり良い答えですが、の場所がMicrosoft.WebPages.Compilation.AddGlobalImportに変更されましたSystem.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport
jahu 14

2
このメソッドを使用する大きな利点は、名前空間が1か所だけで宣言されている間、名前空間がすべてのビュー(領域内のビューを含む)で使用できるということです。
ジャフ2014

14

あなたが知っている必要があることを1つの問題は、あなたが経由で名前空間をインポートするときにということですweb.configViewsそのフォルダnamespaceにインポートされJUSTその内のビューでフォルダ。インポートしたい場合は、手段namespaceエリアの景色、あなたもそれをインポートする必要がありnamespace、その領域の中で、web.config地域の中にあるファイル、Viewsフォルダ、


11

名前空間とライブラリの場合

@using NameSpace_Name

モデル用

@model Application_Name.Models.Model_Name 

Razorページのリストを反復する(リスト項目にアクセスするにはforeachループを使用する必要があります)

@model List<Application_Name.Models.Model_Name>

@foreach (var item in Model)
   {  
          <tr>
                <td>@item.srno</td>
                <td>@item.name</td>
         </tr>  
   }



2

かみそりビューで名前空間をインポートするには、以下の方法を追加する必要があるだけだと思います。

@using XX.YY.ZZ

0

必要に応じて、次のいずれかの方法を使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.