UrlHelper.ActionLinkメソッドで絶対URLを取得する - ASP.NET Core MVC

UrlHelperのActionLinkメソッドを使うと絶対URLを取得できます。 ASP.NET Core 3.0で追加されたようです。知らなかった。 docs.microsoft.com Actionメソッド Actionメソッドは相対URLを取得できます。普段使うやつですね。 Url.Action("Index", "Sample") /…

相関サブクエリを使ったデータ取得 - EF Core

EF Coreで相関サブクエリを使ってデータを取得するサンプルを書いてみました。 サブクエリはselect句、from句、where句に記述できますが、今回はwhere句内のサブクエリです。相関ではない単純なサブクエリを試したあと、相関サブクエリでのデータ取得を試し…

ModalParitalTagHelperを作ってみた - ASP.NET Core MVC

BootstrapのModalを使っていると、ほとんど同じマークアップで一部だけを変更したいことがあると思います。 あるあるな要件かなと思いますが、 サイト内で使うモーダルはだいたい同じHTMLで統一したい(class属性も揃えたい) モーダルのタイトルや本文はそ…

前後にタグを出力するTagHelperを作ってみた - ASP.NET Core MVC

TagHelperを調べているとTagHelperOutputクラスに次のプロパティを見つけました。 PreContent PostContent PreElement PostElement このあたりのプロパティを使うと、タグの前後にタグを出力して例えばタグを入れ子にするといったこともできるようです。 と…

ASP.NET Core MVC - アクション名のAsyncサフィックスが削除されることを確認する

ASP.NET Core の破壊的変更 - .NET Core | Microsoft Docs 上記ドキュメントにある「コントローラアクション名からAsync サフィックスが削除される」ことを確認してみました。 MVC: コントローラー アクション名から Async サフィックスを削除 aspnet/AspNet…

SQL Server - シーケンスを使う

SQL Serverでシーケンスを使うサンプルです。 シーケンスを久しぶりに使おうと思ったらあまり覚えておらず、以前に試したので記事が残ってるかと探してみましたが、見つからなかったのでさらっと残しておきます。 ざっくり言うとシーケンスは連番を生成する…

.NET Core - Type.IsAssignableFromのメモ

Type.IsAssignableFromは「メソッドを呼び出すインスタンス型の変数」に「メソッドの引数で指定した型のインスタンス」を割り当てることができるかどうかを判断します。 このメソッドはあるインターフェイスを実装しているか?あるクラスを派生しているか?…

ASP.NET Core - ファイルを扱う

ASP.NET Coreでファイルを扱うサンプルです。 ドキュメントはこのあたり。 docs.microsoft.com 任意の物理ファイルを扱うには、IFileProviderを実装したPhysicalFileProviderを使います。 // ルートフォルダ(=スコープ)を指定してファイルプロバイダを生成…

ASP.NET Core MVC - 時間がかかるアクションメソッドをキャンセルできるようにする

ASP.NET Core 2.2からサポートされているインプロセスホスティングモデル。その特徴の1つをDocsから引用します。 クライアントの切断が検出されます。 クライアントが切断されると、HttpContext.RequestAbortedキャンセルトークンが取り消されます。 docs.mi…

ASP.NET Core MVC - Serilogを使ってファイルにログ出力する

ASP.NET Core MVCでSerilogを使ってファイルにログ出力するサンプルを書いてみました。 Serilog — simple .NET logging with fully-structured events サンプルでは次のことを実現しています。 ログをファイルに出力する 日付ごとにログファイルを作成する …

AutoMapper - ポリモーフィズムを使ったマッピングを試す

マッピング元はポリモーフィズムもいけるよね?と確認したくてサンプルを書いてみました。 いつものごとくモデルとプロファイルを用意します。 // マッピング元の親クラス public abstract class SampleSrcBase { public int Id { get; set; } public string…

AutoMapper - コンストラクタを使ってマッピングする

ちょっと発見だったのでメモ。 AutoMapperでは、マッピング先のコンストラクタを呼び出してマッピングすることができます。マッピング先にはpublicなsetterプロパティも必要ありません。 ということでサンプルコード。 モデルとプロファイルを用意して、 // …

ASP.NET Core MVC - ビューを相対パスで指定する

ASP.NET Core MVCではビュー名を指定してビューを探すと思いますが、ビュー名だけでなくて相対パスも指定できますよというメモ。 相対パスは~か/ではじまる文字列です。 Controller.Viewメソッドの引数viewName ViewResultを生成するメソッドですね。このメ…

LINQ - シーケンスの最初(最後)に要素を追加する

今さら感いっぱいですが、気づいたらEnumerableに次の拡張メソッドが追加されていました。 Enumerable.Prependメソッド シーケンスの最初に要素を追加する Enumerable.Appendメソッド シーケンスの最後に要素を追加する 今まではちょっと微妙かなと思いつつ…

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

ASP.NET Core MVCの勉強の記録です。 こちらのドキュメントを参考にしてIdentityを使わないCookie認証を試しました。 ASP.NET Core Identity なしでの cookie 認証を使用します。 | Microsoft Docs Cookie認証はいわゆるフォーム認証だと思うんですが、もし…

ASP.NET Core MVC - 部分ビューを再帰で呼び出す

部分ビューから自身の部分ビューを再帰で呼び出しできるよね?と思って試したらできましたというお話。 以下は次のul・liを作るサンプルです。 モデルを準備 まずはノードを表すモデルとデータを用意します。 // ノード public class Node { // 名前 public …

ASP.NET Core MVC - クッキーを使う

ASP.NET Core MVCのクッキーの勉強メモです。 クッキーを設定する レスポンスにクッキーを設定するには、IResponseCookies.Appendメソッドを使います。 // クッキーを設定する HttpContext.Response.Cookies.Append("test", "Hoge"); // レスポンスに追加さ…

ASP.NET Core MVC - @addTagHelperは名前空間ではなくアセンブリ名を指定する

タグヘルパーを作ってみていきなりハマったのでもメモしておきます。 @addTagHelperディレクティブでタグヘルパーを使えるようにしますが、このときに指定するのは名前空間ではなくアセンブリ名です。 例えば次のようなTagHelperを作ったとして、 // アセン…

T-SQL - 再帰CTEで指定した期間の日付一覧を作る

T-SQLのメモです。 開始日と終了日を指定して、その期間の日付一覧を取得したいと思います。 再帰CTE(共通テーブル式)を使って書くとこんな感じになるのかなと。 -- 指定した期間の日付一覧を取得するクエリ -- @start 開始日(その日は含む) -- @end 終…

ASP.NET Core MVC - TempDataを使う

ASP.NET Core MVCの勉強の記録です。 今回はTempDataを使ってみたいと思います。いつものようにDocsを参考にしています。 ASP.NET Core でのセッションとアプリの状態 | Microsoft Docs StartupクラスでTempDataを構成する まずはTempDataを使うために準備し…

ASP.NET Core MVC - Sessionを使う

ASP.NET Core MVCの勉強の記録です。 いつものごとくDocsを参考にして、今回はセッションを使ってみたいと思います。 ASP.NET Core でのセッションとアプリの状態 | Microsoft Docs Startupクラスでセッションを構成する まずはセッションを使えるようにしま…

ASP.NET Core MVC - オプションパターンで設定ファイルを読み込む

オプションパターンを使って設定ファイルから構成情報を読み込むサンプルです。 こちらを読みながら試しました。 ASP.NET Core のオプション パターン | Microsoft Docs 上記ドキュメントにもメリットが書いてありますが、平たく言ってしまうと「オプション…

ASP.NET Core MVC - グローバルフィルタで認証

グローバルフィルタを使って認証を必要とする方法です。認証を必要とするというかアクセス制御するというか。 ウェブアプリのうちログインを必要とする部分が多くてログイン不要な部分が少ない場合、グローバルフィルタで全体を制御しつつ、ログインなしで利…

T-SQL - lag関数/lead関数でn個前/n個後の行を取得する

lag関数とlead関数を知ったのでメモしておきます。 LAG (Transact-SQL) | Microsoft Docs LEAD (Transact-SQL) | Microsoft Docs それぞれ一言で説明すると、 lag関数 ... n個前の行を取得する lead関数 ... n個後の行を取得する といった感じです。この2つ…

T-SQL - count(*)とcount(カラム名)の違い

知らなかったのでメモ。 count(*)は全行数を取得するのに対して、count(カラム名)はnullを除く行数を取得します。 サンプルクエリを書いて確認しておきましょう。 select -- nullに関係なく全行数を取得 count(*) as [count(*)], -- nullを除く行数を取得 co…

ASP.NET Core - ミドルウェアパイプラインを作ってみる

ミドルウェアとかミドルウェアパイプラインとかリクエストデリゲートなどを理解するために、次のドキュメントを読みながら記事内にあるミドルウェアパイプラインの画像の動きを作ってみました。 ASP.NET Core のミドルウェア | Microsoft Docs この画像のこ…

AzureのComputer Vision APIのOCR機能を試してみた

Azure Cognitive ServicesにあるComputer Vision APIを使ってみました。 Computer Vision — 画像処理および画像分析 | Microsoft Azure Computer Vision APIといってもいくつか機能があって、今回はそのうちOCR機能をJavaScript(というかTypeScript)で試し…

ASP.NET Core MVC - ビューコンポーネントの呼び出し方色々

ASP.NET Core MVCのビューコンポーネントを試してみました。 ビュー コンポーネント | Microsoft Docs ビューコンポーネントは従来のASP.NET MVCにあったチャイルドアクション(子アクション、ビューからRenderActionで呼び出していたあれ)の代わりになる機…

ASP.NET Core MVC - ビューの基底クラスを変更する

ASP.NET Core MVCのビュー全体で、プロジェクト独自のプロパティやメソッドを追加して利用したいことがあるかなと思います。 デフォルトでは、ビューはMicrosoft.AspNetCore.Mvc.Razor.RazorPage<TModel>を継承しています。このクラスを派生したクラスを用意すること</tmodel>…

ASP.NET Core MVC - 生成されるURLを小文字にする

ASP.NET Core MVCを勉強し始めたので、その記録というかメモというか小ネタを残していきたいと思います。 まずはタグヘルパーやHTMLヘルパー(URLヘルパー)を使って生成するURLを小文字にする方法です。CoreじゃないASP.NET MVCでは、RouteCollection.Lower…