経緯
ウェブブラウザからアップロードした任意のファイルをダウンロードできるようにしたいです。
このファイルは任意なため、MIME タイプ、content-type を事前に知ることができません。
ファイルの拡張子から対応するコンテントタイプを引き出すことになりますけれども、対応するマップは作りたくありませんの><。
調べた結果
.NET4.5 から MimeMapping.GetMimeMapping メソッドが用意されていました!
ウェブブラウザからアップロードした任意のファイルをダウンロードできるようにしたいです。
このファイルは任意なため、MIME タイプ、content-type を事前に知ることができません。
ファイルの拡張子から対応するコンテントタイプを引き出すことになりますけれども、対応するマップは作りたくありませんの><。
.NET4.5 から MimeMapping.GetMimeMapping メソッドが用意されていました!
を見ながらサンプルプロジェクトを MVC5 で作りましょう♪
。。。あら?プロジェクトのテンプレートに MVC がありません><。
先日、Visual Studio 2015 Update 1 へアップデートいたしました。おそらくその時の操作が原因で MVC テンプレートが消えたのだと存じます。
無事に MVC テンプレートを復活させることができましたので、その方法をメモしておきますわ♪
2016年8月18日11時12分追記: ソリューション全体をアップロードしました。
Identity をカスタマイズした独自の認証を持ったサンプルのアプリを作ってみました。Identity の拡張方法の習得を目標に、それ以外はシンプルに、あまりこだわらないようしております。
Visual Studio 2015 でプロジェクトを作成するときに認証処理を追加するように選択することができます。そうしますと、Identity を使用した認証ロジックと、ユーザーやロールを管理するデータベーステーブルが予め作られます。
このファイルやコードが大変参考になります。
そこで、ファイルの構成はプロジェクト生成時に自動作成される認証のあり方に近づけます。
コードの振る舞いや、内容の理解、実際に書くコードの内容は、参考ウェブページをお手本にいたします。
[Index(IsUnique=true)]
という Annotation 属性をプロパティに付けることでそのカラムは一意となる。public class Sex { public int Id { get; set; } [Required] [Index(IsUnique=true)] [MaxLength(10)] public string Name { get; set; } }
にて DB データをエクスポートする機能を紹介いたしました。
今回は、対となるインポート機能を開発いたします♪
こちらのシステムでインポート機能を考えます。ポイントは次の 2 点です。
Parent 1-n Child という関係を持っております。
ですのでシステム上は、Parent は必ず 1 つですけれども、それに紐づく Child はいくつあっても問題ありません。
ですけれども、インポート機能におきましては子どもの数の最大数を制限しませんと CSV ファイルの仕様を固めることが難しくなります。
したがいまして、今回は Child の数を最大 2 つとし、それ以上登録したい場合はウェブブラウザから追加する、という運用方法を想定いたしました。
に沿ってサンプルプロジェクトを作成したところからスタートです。
ソリューションおよびプロジェクト名は Sample3 といたしました。
ASP.NET MVC5 のチュートリアルを実践しておりますと、開発環境の内部に自然とデータベースが作成され、自然と接続しております。
大変便利ですの♪
ですけれども、自分の意志でデータベースを作成し、そして、自分の意志でプロジェクトから接続するデータベースを決めるにはどうしたらよいのかしら?
今回、それらのやり方を残します!
追記: インポート版も作りましたの♪
DB のデータを CSV に出力してウェブブラウザからダウンロードしたいですの!今回、それを実現するコードを残しておきますわ♪
「1 行に Parent とその Child を 2 人分まで出力」いたしますので、子供が 0 人の場合は子どもの部分が空白となりますし、1 人の場合は 1 人分のみ埋まります。Child が 3 人の場合は、2 人分のみ CSV に書き込まれ、3 人目は記録されない点に注意ですの!
【ASP.NET MVC5】例外発生を補足して自動的にログ書き込みを行う方法 | oki2a24 ではエラーが発生したときに自動的にロギングされるように設定いたしました。
この時、エラーページが自動的に表示されるわけですけれども、これを明確にコントロールするためのポイントをメモしておきます♪
ひとつひとつコードを見ていきます。