【ASP.NET MVC5】例外発生を補足して自動的にログ書き込みを行う方法

スポンサードリンク

前提条件

ASP.NET MVC5 では、開発中に例外が発生しますとビューに自動的に例外情報を表示してくださいます。

本番の時も、自動的に知らせて欲しいですの!ですけれども、画面に表示するわけにはまいりません。ログに出力したいですの♪

今回、例外が発生したら自動的にログに書き込む方法を残します。

例外発生を自動的にロギングするコード

  • Global.asax ファイル を利用する。
  • Application_Error メソッド宣言には override 不要。
  • エラーは、Application_Error メソッドの引数ではなく、Server.GetLastError() で取得する。

Global.asax

protected void Application_Error(object sender, EventArgs e)
{
 var exception = Server.GetLastError();
 if (exception == null)
 {
  return;
 }
 logger.Error(exception.Message, exception);
}

“【ASP.NET MVC5】例外発生を補足して自動的にログ書き込みを行う方法” の続きを読む

【ASP.NET MVC5】Bootstrap 拡張の DatePicker を使う手順とポイント

ポイント

  • 標準で日本語対応しているのが嬉しい。
  • DatePicker のフォーマットは yyyy-mm-dd とし、input date で使用するフォーマットに合わせること。これにより、DatePicker も input type date も両方使用できる。
  • Chrome や Edge だと input type date も、DatePicker for Bootstrap も両方有効になり、好きな方で操作できる。input type date の yyyy/MM/dd フォーマットで表示された。
  • Internet Explorer だと DatePicker が効いて yyyy-MM-dd フォーマットで表示される。
  • input date は IE が対応していないため、後数年もすれば input date で DatePicker と同等のことができるようになるであろう。そうすると、DatePicker for Bootstrap は不要となると思う。

導入流れ、使い方まとめ

DatePicker 導入までの流れ

  1. パッケージマネージャーコンソールから DatePicker をインストール
  2. Datepicker 動作用の JavaScript を書く。
  3. BuldleConfig に DatePicker と 動作用の JavaScript を読みこませるよう記述
  4. _Layout.cshtml などのビューに、BuldleConfig で設定したパスを記述

DatePicker を使用するには、の例まとめ

  • モデルのプロパティの DataType を Date に指定
  • モデルのプロパティの DisplayFormat の DateFormatString を yyyy-MM-dd に、ApplyFormatInEditMode を true に設定する。
  • ビューではタグの class に DatePicker 動作用のクラスを追加する。

DatePicker 導入の具体的な手順・コード

“【ASP.NET MVC5】Bootstrap 拡張の DatePicker を使う手順とポイント” の続きを読む


スポンサードリンク

【ASP.NET MVC5】ちょっとしたお試しをするときに土台となるアプリの作り方チュートリアル

完成アプリキャプチャ。Children コントローラーの Index アクション

2016年8月16日追記: 本投稿のコードをアップいたしました。

追記: 【ASP.NET】【MVC5】お試しウェブアプリチュートリアルのエラーを解決 – oki2a24 で説明した通り、エラーを回避するために手順を一部変更しております。

サンプルアプリ概要

MVC 関係

  • スキャフォールディングで各テーブルのコントローラー、ビューをぱっと作って済ませる。
  • 認証なし

データベース関係

  • データベース名: ApplicationDb
  • テーブル
    • Parents
    • Children
    • Sexes ← 男、女が入っているだけのマスタテーブル
  • リレーション
    • Parents 1-n Children
    • Parents n-1 Sexes
    • Children n-1 Sexes
  • レコードから見るテーブルのリレーション表現は
    • Parents には Children 関係のカラムは無い。
    • Children は ParentsId カラムを持ち、親を指定する。
    • Parents と Children は SexId を持ち、性別を指定する。
    • Sexes には、他テーブル関係のカラムは無い。

それでは実際に作っていきましょう♪

“【ASP.NET MVC5】ちょっとしたお試しをするときに土台となるアプリの作り方チュートリアル” の続きを読む

【ASP.NET MVC5】log4net の導入手順メモ♪

ロギングのライブラリ、log4net を使う理由

ログのライブラリを使う理由は、次の2つです。

  • ファイルのロック、排他制御をしてくれる
  • 自動的にローテーションをしてくれる

log4netNLog の2種類がメジャーなようです。

  • log4net の方が歴史が長く、インターネット上の知見が多い。
  • log4net の方が「枯れた技術」となっていそう。
  • NLog の方が更新されている。
  • NLog の方がパフォーマンスが優れている、というページがある。

今回は、歴史とノウハウが大きいという理由で log4net を採用いたしました。

では早速導入手順を残してまいります。2種類のやり方を解説いたします。

どちらもASP.NET MVC5 プロジェクトを作成し、アクティブになっている状態からスタートです♪

【log4net を ASP.NET MVC5 プロジェクトに導入する方法1】Web.config にログ設定を書くやり方

“【ASP.NET MVC5】log4net の導入手順メモ♪” の続きを読む

【ASP.NET MVC5】モデルの bool プロパティをビューでラジオボタン表示するサンプル♪

Index や Details、Delete の確認画面での表示の様子
Index や Details、Delete の確認画面での表示の様子

Create と Edit での表示の様子
Create と Edit での表示の様子

本投稿のサンプル内容

  • ソリューション名: Test1
  • プロジェクト名: Test1
  • ASP.NET Web アプリケーション Visual C#
  • ASP.NET 4 の、MVC
  • 認証: なし
  • モデル Person
  • Person のコントローラー PeopleController をスキャフォールディングで作成

モデルのプロパティで、型が bool のもので、次の 3 パターンの例を作成します。

  • Sex: 性別。チェックボックス。チェック有りがどちらで、チェック無しがどちらかは、補足しないと判別が難しそう。
    スキャフォールディング時のデフォルト。
  • IsRightHanded: 利き手。新規作成や編集のフォームはラジオボタンで「右利き」「左利き」を選択する。一覧や詳細では、「右利き」「左利き」を表示する。
    そうするために、コードを書く。本投稿のメイン。
  • IsActive: 有効かどうか。ドロップダウンリスト。自動的にドロップダウンリストが表示されるが、選択肢は「Not Set」「True」「False」であり、変更方法が不明なため使い途が難しい。

“【ASP.NET MVC5】モデルの bool プロパティをビューでラジオボタン表示するサンプル♪” の続きを読む

【ASP.NET MVC5】チュートリアルの Data Source には MSSQLLocalDB を指定すること!【Visual Studio 2015】

Web.config の データベース接続文字列のポイント

  • <connectionStrings> の Data Source
  • (LocalDb)\v11.0; だと繋がらず、エラーとなる。
  • (LocalDb)\MSSQLLocalDB; とする。

“【ASP.NET MVC5】チュートリアルの Data Source には MSSQLLocalDB を指定すること!【Visual Studio 2015】” の続きを読む

【ASP.NET MVC5】input type=”date” に初期値を設定する時のモデルの属性指定

ポイント

  • データベースから取得した年月日をビューに渡しても、ウェブブラウザに表示できなかったのが発端
  • input タグの value のフォーマットを yyyy-MM-dd と指定する必要があった。

コード例

  • [DataType(DataType.Date)] と指定することで、ビューの EditorFor の input type は自動的に date となる。
  • DisplayFormat の DataFormatString を “{0:yyyy-MM-dd}” と指定することで、input の value が 2015-10-07 といったフォーマットになる。
  • DisplayFormat の ApplyFormatInEditMode を true と指定することで、フォームの年月日を修正しても yyyy-MM-dd のフォーマットが保たれる。

モデルのプロパティ「誕生日」を例にしたコード

[DisplayName("誕生日")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime BirthDay { get; set; }

“【ASP.NET MVC5】input type=”date” に初期値を設定する時のモデルの属性指定” の続きを読む

ASP.NET MVC5 モデル開発手順やポイントメモ

Visual C# の ASP.NET Web アプリケーションでプロジェクトを作成した状態からスタートです。

コードファーストの手法で進めてまいります。モデルに書いたコードを、マイグレーションのコマンドを打つことでデータベースに反映していきますわ。

モデルを作成

モデル作成手順

特に「モデルを作る」というメニューは無いようですので、単純に C# のクラスを作ります。

  1. Models フォルダで右クリック
  2. 追加 > クラス
  3. 「単数形.cs」で「追加」

“ASP.NET MVC5 モデル開発手順やポイントメモ” の続きを読む