部分ビュー
- 部分ビューとは、別のマークアップ ファイルの出力表示の中に、HTML をレンダリングする Razor マークアップ ファイル (.cshtml) です。Views フォルダー (MVC) または Pages フォルダー (Razor Pages) 内で保持される .cshtml マークアップ ファイルです。
- 共通するレイアウト要素は、_Layout.cshtml ファイルで指定する。
- マークアップを表示するために、複雑な表示ロジックやコード実行が必要になる場合は、部分ビューを使用しない。 部分ビューの代わりに、ビュー コンポーネントを使用する。
- 部分ビューがファイル拡張子を指定せずに名前で参照された場合、所定の順序で次の場所が検索されます。
Razor ページ
・現在実行中のページのフォルダー
・ページのフォルダーの上にあるディレクトリ グラフ
・/Shared
・/Pages/Shared
・/Views/SharedMVC
・/Areas/<Area-Name>/Views/<Controller-Name>
・/Areas/<Area-Name>/Views/Shared
・/Views/Shared
・/Pages/Shared
.cshtmlファイルのインクルード
部分タグヘルパーを使う。部分タグヘルパーは、Razor Pages と MVC アプリで部分ビューをレンダリングするために使用される。
1 |
<partial name="Shared/_ProductPartial.cshtml" for="Product"> |
name 属性は必須です。 レンダリングする部分ビューの名前またはパスを示します。 部分ビュー名が指定されると、ビューの検出プロセスが開始します。 明示的なパスが指定されているとき、このプロセスは回避されます。 次のマークアップでは明示的なパスが使用されており、_ProductPartial.cshtml が Shared フォルダーから読み込まれることを示しています。 for 属性を使用し、バインディングのために部分ビューにモデルが渡されます。
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
フィルタの使い方
IActionFilterを使ってアクションメソッドの前後でログを出力するサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//フィルタクラス定義 public class LogFilter<T> : IActionFilter { protected readonly ILogger mLogger; public LogFilter(ILogger<T> pLogger) { this.mLogger = pLogger; } public void OnActionExecuting(ActionExecutingContext context) { mLogger.LogDebug("START"); } public void OnActionExecuted(ActionExecutedContext context) { mLogger.LogDebug("END"); } } |
1.TypeFilter属性を使う場合
1 2 3 4 5 |
//フィルタクラスの適用 [TypeFilter(typeof(LogFilter<TestController>))] public class TestController : Controller { } |
2.ServiceFilter属性を使う場合
1 2 3 4 5 6 7 |
//Startup.cs に LogFilterを登録する services.AddScoped<LogFilter<TestController>>(); //フィルタクラスの適用 [ServiceFilter(typeof(LogFilter<TestController>))] public class TestController : Controller { } |
ASP.NET Core Logging With ActionFilter
ASP.NET MVCにおけるFilterの作成方法と実行順序制御
ASP.NET CoreアプリのDependency Injection処理を別のDIコンテナに委譲する(完全版)
コントローラ(Razor)とJavaScript間で変数を共有化
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<script> $(function () { //モデル変数をJavaScriptの変数として受け取る @{ @:var mode = "@Model.DIALOG_MESSAGE.MODE"; @:var message = "@Model.DIALOG_MESSAGE.MESSAGE"; } if (mode != 0) { $('.modal-body').html(message); } }); </script> |
【ASP.NET】Razorコードブロック中でのJavaScriptの記述方法
ASP.NET MVC 3: Razor’s @: and <text> syntax
変数を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属性が便利
クッキー認証
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コアでファイルを非同期で保存すると、DbContextで例外が発生する
ASP.NET スレッドプール枯渇の再現(5) - "Server too busy" をようやく再現 & 非同期呼び出しの効能
ASP.NET CoreのDI
コンストラクタDI
ASP.NET CoreにおけるDI(Dependency Injection)
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