Asp.net-core-razor-view-import

提供:Dev Guides
移動先:案内検索

ASP.NET Core-Razor View Import

この章では、Razor View Importについて説明します。 ViewStartファイルに加えて、ビューをレンダリングするときにMVCフレームワークが検索する ViewImports ファイルもあります。

ViewStartファイルと同様に、ViewImports.cshtmlをフォルダーにドロップできます。また、ViewImportsファイルはフォルダー階層内のすべてのビューに影響を与えることができます

インポートの表示

  • このビューは、このバージョンのMVCで新しく追加されました。以前のバージョンのMVCでは、XML構成ファイルを使用して、Razorビューエンジンの特定の側面を構成できました。
  • これらのXMLファイルは削除され、代わりにコードを使用します。
  • ViewImportsファイルは、コードが記述できる場所であり、ビューに必要な名前空間を取り込むための一般的なディレクティブを配置できます。
  • ビューでよく使用する名前空間がある場合、すべてのビューで* usingディレクティブ*を使用したり、クラスの完全な名前空間を入力したりする代わりに、 ViewImports ファイルに* usingディレクティブ*を1回表示できます。

  • usingディレクティブ*を ViewImports に移動する方法を簡単な例を見てみましょう。 Indexビュー内には、次のプログラムに示すように、名前空間 FirstAppDemo.Controllers を取り込むための* usingディレクティブ*があります。
@using FirstAppDemo.Controllers
@model HomePageViewModel
@{
   ViewBag.Title = "Home";
}
<h1>Welcome!</h1>

<table>
   @foreach (var employee in Model.Employees) {
      <tr>
         <td>
            @Html.ActionLink(employee.Id.ToString(), "Details", new { id = employee.Id })
         </td>
         <td>@employee.Name</td>
      </tr>
   }
</table>

ディレクティブを使用すると、Razorビューから生成されたコードを正しくコンパイルできます。 *using directive がなければ、C#コンパイラはこのEmployeeタイプを見つけることができません。 従業員のタイプを確認するには、 Index.cshtml ファイルからusingディレクティブを削除しましょう。

@model HomePageViewModel
@{
    ViewBag.Title = "Home";
}
<h1>Welcome!</h1>

<table>
   @foreach (var employee in Model.Employees) {
      <tr>
         <td>
            @Html.ActionLink(employee.Id.ToString(), "Details", new { id = employee.Id })
         </td>
         <td>@employee.Name</td>
      </tr>
   }
</table>

次に、アプリケーションを実行します。

Index CSHtml

型または名前空間 HomePageViewModel が見つからなかったことを示すエラーの1つが表示されます。 ビューのいくつかが同じ* usingディレクティブ*を必要としているためかもしれません。 したがって、各ビュー内に配置する代わりに、ViewsフォルダーにViewインポートを作成してみましょう。 これにより、Viewsフォルダを右クリックして[追加]→[新しいアイテム]を選択するだけで、すべてのビューに*使用ステートメント*が追加されます。

ホームページモデルビュー

中央のペインで、MVCビューのインポートページを選択します。 デフォルトでは、名前は_ViewImports.cshtmlです。 ViewStartと同様に、このファイルを使用してHTMLをレンダリングすることはできないため、[追加]ボタンをクリックします。

Views imports Cshtml

次に、以下に示すように、この中の* usingディレクティブ*を_ViewImports.cshtmlファイルに追加します。

@using FirstAppDemo.Controllers

これで、このフォルダーまたはサブフォルダーに表示されるすべてのビューは、正確なusingステートメントを指定せずに、FirstAppDemo.Controllersの型を使用できるようになります。 アプリケーションを再度実行すると、ビューが現在機能していることがわかります。

FirstAppDemo Controllers