.NET Core

ASP.NET Core WEB TIPS

投稿日:2019年5月8日 更新日:

 

部分ビュー

  • 部分ビューとは、別のマークアップ ファイルの出力表示の中に、HTML をレンダリングする Razor マークアップ ファイル (.cshtml) です。Views フォルダー (MVC) または Pages フォルダー (Razor Pages) 内で保持される .cshtml マークアップ ファイルです。
  • 共通するレイアウト要素は、_Layout.cshtml ファイルで指定する。
  • マークアップを表示するために、複雑な表示ロジックやコード実行が必要になる場合は、部分ビューを使用しない。 部分ビューの代わりに、ビュー コンポーネントを使用する。
  • 部分ビューがファイル拡張子を指定せずに名前で参照された場合、所定の順序で次の場所が検索されます。
    Razor ページ
        ・現在実行中のページのフォルダー
        ・ページのフォルダーの上にあるディレクトリ グラフ
        ・/Shared
        ・/Pages/Shared
        ・/Views/Shared

    MVC
        ・/Areas/<Area-Name>/Views/<Controller-Name>
        ・/Areas/<Area-Name>/Views/Shared
        ・/Views/Shared
        ・/Pages/Shared

ASP.NET Core の部分ビュー

 

.cshtmlファイルのインクルード

部分タグヘルパーを使う。部分タグヘルパーは、Razor Pages と MVC アプリで部分ビューをレンダリングするために使用される。

name 属性は必須です。 レンダリングする部分ビューの名前またはパスを示します。 部分ビュー名が指定されると、ビューの検出プロセスが開始します。 明示的なパスが指定されているとき、このプロセスは回避されます。 次のマークアップでは明示的なパスが使用されており、_ProductPartial.cshtml が Shared フォルダーから読み込まれることを示しています。 for 属性を使用し、バインディングのために部分ビューにモデルが渡されます。

ASP.NET Core の部分タグ ヘルパー

ASP.NET Core の部分ビュー

ASP.NET Core 2.0 MVC Partial Views

 

POSTで最初の画面表示でRequire Validationがエラー表示される問題の対応

(対応1)

同じアクションでPOSTとGETを用意する。GETは画面表示、POSTはデータ処理に分けて定義する。別の問題であるが、フォームの再送信のメッセージ表示の問題も関係するので、同じアクションでPOST(データ処理用)とGET(データ表示用)で分けて定義した方がベストと思われまる。。

Validation error displayed on page load in ASP.NET MVC

(対応2)

ModelStateを使用する。「ModelState.Clear();」を実行する。

Preventing model validation on first time load

MVC Razor Validation Errors showing on page load when no data has been posted

ModelState(モデル検証)のエラーを消す

 

フィルタの使い方

IActionFilterを使ってアクションメソッドの前後でログを出力するサンプル

1.TypeFilter属性を使う場合

2.ServiceFilter属性を使う場合

ASP.NET Core Logging With ActionFilter

ASP.NET Core フィルター

ASP.NET MVCにおけるFilterの作成方法と実行順序制御

ASP.NET CoreアプリのDependency Injection処理を別のDIコンテナに委譲する(完全版)

 

コントローラ(Razor)とJavaScript間で変数を共有化

【ASP.NET】Razorコードブロック中でのJavaScriptの記述方法

ASP.NET MVC 3: Razor’s @: and <text> syntax

Razor 内で JavaScript のコードを出力する

変数をJavaScriptに渡す - javascript、razor

 

検証(Validation)が効かない時の対応

ビューのcshtmlファイルに以下のコーディングが抜けていないかを確認。必須なので、コーディングされていなければ、追加する。気が付かず削除していた・・・・

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

 

検証(Validation)が効かないボタンを作成する

キャンセルボタンや戻るボタンなど、検証(Validation)が無効になるボタンを作成するには、formnovalidate 属性を追加する

disable button validation in asp.net core razorpage for specific button

 

DropDownListForで検証(Validation)で必須にならないようにする

バインドするプロパティにNULL許可を与える

DropDownListFor Makes Property Required?

DropDownListFor Unobtrusive Validation Required Not getting correct attributes

 

Modelに指定していないのにRequired属性が付く

プロパティをNULL許可しない数値型にしている場合は、自動的にRequired属性が付くようだ

 

設定ファイル(appsettings.json)について

設定ファイルは、appsettings.jsonとappsettings.Development.jsonが存在している。階層構造になっていて、同じセクションが設定されている場合、デバッグ実行時は、appsettings.Development.jsonの値が優先される。

ASP.NET Core で設定ファイル(appsettings.json)から設定を取得する

Asp.NET Core のコンフィグをカスタムクラスから使う

 

リクエスト フォージェリ (XSRF または CSRF) 攻撃対策

ASP.NET Core MVC で追加されたAutoValidateAntiforgeryToken属性が便利

 

Ajaxで400:BadRequestが発生

MCV側の POST メソッドに ValidateAntiForgeryToken 属性が付いていることが原因。cshtml側でAjaxのアクション実行時にトークンが設定されていないため。RequestVerificationTokenヘッダにトークンを設定する。

 

@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf

$.ajax({
    url: "/test",
    headers: { "RequestVerificationToken":"@(Xsrf.GetAndStoreTokens(Context).RequestToken)" }
}).done(function (result) {
}).fail(function () {
}).always(function () {
})

[ASP.NET Core 2.1]AJAXでAntiForgeryTokenを使う

ASP.NET Core MVC で追加されたAutoValidateAntiforgeryToken属性が便利

 

クッキー認証

ASP.NET Core Identity を使わない認証

Cookie 認証でログイン・ログアウト処理を作る【ASP.NET Core】

ichiroku11/AccountController.cs

ASP.NET Core MVC - Cookie認証を試す

Cookie Authentication In ASP.net Core 2.0

ASP.NET Core Identity なしでの cookie 認証を使用します。

CookieAuthenticationOptions.CookieName Property

 

ASP.NET Core の非同期コントローラーの意味合い

ASP.NET Core Web API のコントローラー アクションの戻り値の型

ASP.NET の非同期/待機の概要

ASP.NET Core の非同期コントローラー

C#でよく見る○○○Async()の使い所

ASP.NETコアでファイルを非同期で保存すると、DbContextで例外が発生する

ASP.NET スレッドプール枯渇の再現(5) - "Server too busy" をようやく再現 & 非同期呼び出しの効能

 

ASP.NET CoreのDI

コンストラクタDI

ASP.NET CoreにおけるDI(Dependency Injection)

ASP.NET Core でコレクションを DI する方法

How do I log from other classes than the controller in ASP.NET Core?

インターフェイス インジェクション

Resolving instances with ASP.NET Core DI

The difference between GetService() and GetRequiredService() in ASP.NET Core

依存性注入(DI)の解説とやり方

 

 

スポンサーリンク

スポンサーリンク

-.NET Core

執筆者:

関連記事

.NET Core WEB TIPS

SDKについて インストールされている .NET Core SDK を確認する .NETCore CLI コマンドを実行するときの .NET Core SDK を明示的に指定する    

ASP.NET CORE で感じたこと

ASP.NET Core

  スタートアップ .NET ASP.NET Core入門 簡単なページを作ってみる - ウマヤディア 意識低めのASP.NET Core MVC入門(2)簡単なフォームを作る 意識低めのA ...