カテゴリー
Microsoft

【.NET4.5】【ASP.NET】【MVC5】ファイル名から簡単に MIME タイプを得るには MimeMapping.GetMimeMapping メソッドを使う

経緯

ウェブブラウザからアップロードした任意のファイルをダウンロードできるようにしたいです。

このファイルは任意なため、MIME タイプ、content-type を事前に知ることができません

ファイルの拡張子から対応するコンテントタイプを引き出すことになりますけれども、対応するマップは作りたくありませんの><。

調べた結果

.NET4.5 から MimeMapping.GetMimeMapping メソッドが用意されていました!

使用例とポイント

カテゴリー
Microsoft

【ASP.NET】【MVC5】【失敗】Web サーバをローカル IIS に指定した時のデータベースエラーに対処できなかった。。。

環境

  • Visual Studio 2015 で作成したプロジェクト
  • MVC5 のウェブアプリで
  • プロジェクト名: Sample1
  • データベース: SQL Server 2014 Express LocalDB を使用してマイグレーションで自動生成した。
  • データベース名: Sample1Context-20151016212614
  • データベースファイルパス: App_Data/Sample1Context-20151016212614.mdf

エラー1. データベースに接続できなくなった

カテゴリー
Microsoft

【ASP.NET MVC5】Web Api を Fiddler で確認する手順メモ

リクエスト送信手順

  1. 右の [Composer] タブ > [Parsed]
  2. 次を入力し、[Execute]
    • GET
    • http://example.com/list/?date=20151222&id=1
    • HTTP/1.1
    • 必要なヘッダーを入れる

レスポンス確認手順

  1. 左の結果行をクリックする。右が [Inspectors] に切り替わる。
  2. 結果を確認する。
    • Headers
    • TextView
    • Raw
    • JSON
    • XML
カテゴリー
Microsoft

Visual Studio Update 1 へアップデートしたら MVC がプロジェクトテンプレートから無くなっていた問題を解決!

を見ながらサンプルプロジェクトを MVC5 で作りましょう♪

。。。あら?プロジェクトのテンプレートに MVC がありません><。
ASP.NET ウェブアプリを新規作成時、プロジェクトのテンプレートに MVC が無い。。。

先日、Visual Studio 2015 Update 1 へアップデートいたしました。おそらくその時の操作が原因で MVC テンプレートが消えたのだと存じます。

無事に MVC テンプレートを復活させることができましたので、その方法をメモしておきますわ♪

カテゴリー
Microsoft

【ASP.NET MVC5】Identity 2 をベースにした、ユーザー情報を DB に持つ独自の認証プロジェクトのチュートリアル

2016年8月18日11時12分追記: ソリューション全体をアップロードしました。

Identity をカスタマイズした独自の認証を持ったサンプルのアプリを作ってみました。Identity の拡張方法の習得を目標に、それ以外はシンプルに、あまりこだわらないようしております。

構築(勉強)の仕方

Visual Studio 2015 でプロジェクトを作成するときに認証処理を追加するように選択することができます。そうしますと、Identity を使用した認証ロジックと、ユーザーやロールを管理するデータベーステーブルが予め作られます。

このファイルやコードが大変参考になります。

そこで、ファイルの構成はプロジェクト生成時に自動作成される認証のあり方に近づけます。

コードの振る舞いや、内容の理解、実際に書くコードの内容は、参考ウェブページをお手本にいたします。

カテゴリー
Microsoft

【ASP.NET MVC5】マスタの値が重複しないように、モデルのプロパティにインデックスユニークを付ける

ポイント

  • [Index(IsUnique=true)] という Annotation 属性をプロパティに付けることでそのカラムは一意となる。
  • プロパティの型が String の場合、MaxLength も付ける必要がある。一意性をチェックするためには、カラムへの格納サイズが無限とも思われる String だとパフォーマンスが大きく低下するためと思われる。

モデルのコード

    public class Sex
    {
        public int Id { get; set; }
        [Required]
        [Index(IsUnique=true)]
        [MaxLength(10)]
        public string Name { get; set; }
    }

もし MaxLength 属性を付けなかった場合は、どうなったか?

カテゴリー
Microsoft

【ASP.NET MVC5】今度は CSV インポートのサンプルプロジェクト作成チュートリアル

にて DB データをエクスポートする機能を紹介いたしました。

今回は、対となるインポート機能を開発いたします♪

インポート機能のポイント

こちらのシステムでインポート機能を考えます。ポイントは次の 2 点です。

  • CSV の 1 行に Parent とその Child を記入する。
  • インポートできる子ども (Child) は 2 人まで。

Parent 1-n Child という関係を持っております。

ですのでシステム上は、Parent は必ず 1 つですけれども、それに紐づく Child はいくつあっても問題ありません。

ですけれども、インポート機能におきましては子どもの数の最大数を制限しませんと CSV ファイルの仕様を固めることが難しくなります。

したがいまして、今回は Child の数を最大 2 つとし、それ以上登録したい場合はウェブブラウザから追加する、という運用方法を想定いたしました。

CSV インポート開発の流れ

に沿ってサンプルプロジェクトを作成したところからスタートです。

ソリューションおよびプロジェクト名は Sample3 といたしました。

  1. コントローラー CsvController.cs をスキャフォールディング作成
  2. アップロードファイルに対応するモデル CsvFile.cs を作成
  3. アップロードするファイルの種類を検証する属性クラス UploadFileAttribute の作成
  4. ビュー Import.cshtml の作成
  5. インポート処理を司るサービスクラス CsvImportService の作成
  6. テスト CSV ファイル作成と、インポートの確認
カテゴリー
Microsoft

【ASP.NET MVC5】プロジェクト外の DB に接続する方法

ASP.NET MVC5 のチュートリアルを実践しておりますと、開発環境の内部に自然とデータベースが作成され、自然と接続しております。

大変便利ですの♪

ですけれども、自分の意志でデータベースを作成し、そして、自分の意志でプロジェクトから接続するデータベースを決めるにはどうしたらよいのかしら?

今回、それらのやり方を残します!

DB の作成方法

カテゴリー
Microsoft

【ASP.NET MVC5】CSV エクスポートのサンプルプロジェクト作成チュートリアル

追記: インポート版も作りましたの♪

DB のデータを CSV に出力してウェブブラウザからダウンロードしたいですの!今回、それを実現するコードを残しておきますわ♪

CSV エクスポートの対象となるシステム

エクスポートされる CSV の仕様

  • ヘッダ行を出力する。
  • 1 行に Parent とその Child を 2 人分まで出力する。
  • セルは常にダブルクォーテーション「”」で囲む。
  • セルの区切り文字はカンマ「,」とする。
  • 行末に区切り文字は付けない。

「1 行に Parent とその Child を 2 人分まで出力」いたしますので、子供が 0 人の場合は子どもの部分が空白となりますし、1 人の場合は 1 人分のみ埋まります。Child が 3 人の場合は、2 人分のみ CSV に書き込まれ、3 人目は記録されない点に注意ですの!

手順 1. CSV エクスポート用のコントローラー、ビューを作成

カテゴリー
Microsoft

【ASP.NET MVC5】例外発生時のカスタムエラーページの設定ポイント♪

【ASP.NET MVC5】例外発生を補足して自動的にログ書き込みを行う方法 | oki2a24 ではエラーが発生したときに自動的にロギングされるように設定いたしました。

この時、エラーページが自動的に表示されるわけですけれども、これを明確にコントロールするためのポイントをメモしておきます♪

ポイント

  • HTTP 404. Not Found 時にはカスタムエラーページは表示されない。
  • コードの確認ポイント
    • Web.config の <system.web> 内の の mode を On にしていること
    • App_Start\FilterConfig.cs の RegisterGlobalFilters メソッド に HandleErrorAttribute クラスを追加していること
    • Views\Shared\Error.cshtml でエラー画面を設定していること

ひとつひとつコードを見ていきます。