読者です 読者をやめる 読者になる 読者になる

miso_soup3 Blog

主に ASP.NET 関連について書いています。

ASP.NET MVC

Azure Search で自炊本 PDF を検索

by:dots.女子部 Advent Calendar 2016 - Qiita 自炊した本PDFファイルをいくつか用意し、Azure Search で中身を検索する実装を試してみました。 大まかな流れは、次の通りです。 Azure Blob Storage に PDF ファイルを入れる Azure Search を用意する 検索す…

ASP.NET で例外診断のために Bugsnag を触ってみた

Bugsnag という例外診断サービスを ASP.NET で触ってみましたので、簡単にスクリーンショットを貼ります。bugsnag.com料金プランはこちら:Pricing and Plans - Bugsnag 14日間の試用期間がある模様。 導入 Bugsnag のサイトにアクセスし、サインアップを…

ASP.NET MVC の UpdateModel と ValidateModel に思いを馳せる

ASP.NET MVC の Contoller クラスには、UpdateModel(...) と ValidateModel(...) のヘルパーメソッドが定義されています。 このメソッドを使うことで、モデルのバインド先の選択、検証対象の選択を行うことができます。これらの関連メソッドは、Controller …

ASP.NET HttpResponse.Cookies.Add で HttpRequest.Cookies にも反映される件

ASP.NET MVC 上で、Cookie を Response(System.Web.HttpResponseBase) に追加した後、Request(System.Web.HttpRequestBase) の Cookie にもその値が追加されます。アクションメソッドのサンプルコードです。 using System.Diagnostics; using System.Web…

ASP.NET Web API クッキーのエンコードについて

stackoverflow - WebAPI encoding cookie valuesASP.NET MVC ではクッキーの取得・設定時に、値のエンコード/デコードは行われませんが、 ASP.NET Web API の場合は、URL エンコード/デコードが行われます。 ASP.NET Web API ASP.NET Web API におけるクッ…

ASP.NET Web API クエリの文字列の配列を取得

/one?value=1&value=2&value=3のような URL でリクエストがきた場合に、クエリ文字列の同じキーの値を配列として取得する方法。 ASP.NET Web API にて ApiController の Request プロパティからクエリ文字列を取得する アクションメソッドの引数にバインドさ…

URL Rewrite と Tilde(~) の併用時の注意

2年前の古いネタになりますが、Razor 3(ASP.NET MVC 4)の破壊的変更により、 URL Rewrite と <a href="~/Content/pa.jpg"/> 等といったチルダを併用すると、想定したパスが出力されない可能性があります。URL Rewrite にて、Request URL と 書き換え後の URL の階層が同じ場合は、問題</a>…

ASP.NET MVC 5.1 と ASP.NET Web API 2.1 の内容

ASP.NET MVC 5.1、ASP.NET Web API 2.1、ASP.NET Web Pages 3.1 がリリースされたので、内容を調べてみました。この記事には、ASP.NET MVC 5.1 の内容を記載しています。 ASP.NET Web API 2.1 の方は長くなったので別記事にしました: ASP.NET Web API 2.1 …

ASP.NET MVC RouteLink サンプル

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 12 日目前回は RouteLink の基本についてでした。今回は、この RouteLink を活用したサンプルを実装します。RouteLink のメリットの1つ、”パラメーターの指定だけでリンクを貼れる”を利用した…

ASP.NET MVC RouteLink 使い方

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 11 日目ASP.NET MVC では、リンクを貼るための HTML ヘルパーメソッドとして @Html.ActionLink(...) の他に @Html.RouteLink(...) を使うことができます。今回は後者の RouteLink について、基…

ASP.NET MVC 違うコントローラーへのリンクを貼る

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 10 日目今回は、HTML ヘルパー:@Html.ActionLink で、違うコントローラーへのリンクを貼る方法についてです。陥りやすいミスについて少し。 違うコントローラーへリンクを貼る 違うコントロー…

Windows Azure Active Directory を使用した認証アプリ ASP.NET MVC

この記事は、Windows Azure Advent Calendar 2013 14 日目の記事です。Visual Studio 2013 では、Windows Azure Active Directory(以降 WAAD)を使用した認証アプリを作成するための、プロジェクトテンプレートが用意されています。ドメインを入力すれば、認…

ASP.NET MVC 日付でルーティング

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 9 日目今回は、日付を含む URL のルーティング方法について書きます。例として、「~/MyDiary/2013/03/25」という URL でアクセスした場合、次のようにコントローラー:DiaryController、メソッ…

ASP.NET MVC TempData は”次のリクエスト”以降も参照できる

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 8 日目前回 に引き続き TempData についてです。 ASP.NET MVC を始めたばかりの方にとっては、知らなくてもいい情報だと思います。そうでなくとも、通常の Web アプリ実装ではあまり使われない…

ASP.NET MVC TempData を使ってリダイレクト後にメッセージを表示する

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 7 日目今回は、TempData についてです。 TempData とは ASP.NET MVC 用の機能です。ASP.NET Web Forms には用意されておりません。ページ間で値を共有するための仕組みの1つで、前回(ASP.NET …

ASP.NET MVC セッション状態の値を操作してみる

by 深夜連絡 ASP.NET MVC な Web アプリ Advent Calendar 2013 6 日目今回は、ASP.NET の機能「セッション状態」(セッション情報、Session とも呼ばれる)、値の取得・設定の操作を行ってみます。 ここでは、チュートリアルを通して以下のことを確認します…

ASP.NET MVC クッキーを取得・設定する

ASP.NET MVC でのクッキー(Cookie)の取得・設定する方法についてです。といっても、ASP.NET Web Forms と同じく HttpCookie(System.Web)を扱いますし、実装自体はとても簡単です。 問題は、使い方とセキュリティ対策です。 HTTP のやりとり 例題 実装 大…

Enum からドロップダウンリストを生成する

前回 検証付きドロップダウンリストを実装する では、ドロップダウンリストの実装方法について書きました。その続きになります。現在 ASP.NET MVC 5 には、Enum からドロップダウンリストを生成してくれる HTML ヘルパーがありません。 (メタ情報を見て適切…

検証付きドロップダウンリストを実装する

ドロップダウンリスト(あるいは、DropDownList、セレクトリスト、SelectList、コンボボックス、ComboBox とも言う)の実装は、ASP.NET MVC を初めた 90 % の人がググるであろう、最初のハードルです。今回は、ドロップダウンリストの実装例を検証機能も含め…

WEB フォーム送信の仕組みを理解する

この記事は、ASP.NET MVC 入門者向けに書いています。ASP.NET MVC において、フォームの入力値がどのように HTTP 通信で送信されるか把握することは重要です。この記事では次のことについて確認します。 フォーム送信時の HTTP リクエスト GET と POST の使…

ASP.NET MVC のビューは ASPX ではなく Razor を

ASP.NET MVC で開発を始める際は、ASPX ではなく Razor を使用しよう!!という記事です。 最初に ASPX と Razor について簡単に紹介してから、Razor を推す理由を書きます。 ASPX と Razor ASP.NET MVC では、2つのビューエンジンを選択することができます…

コントローラーとビューのテンプレートを編集する in ASP.NET MVC(& Web API)

Visual Studio で ASP.NET MVC のコントローラーやビューを追加する際、右クリックメニューより追加を行うことで、ある程度コードが記述されたものを用意できます。このときに自動生成されるコードは、全体あるいはプロジェクト単位でカスタマイズできます。…

ASP.NET MVC で動的なドロップダウンリストを実装する

ASP.NET MVC で、動的なドロップダウンリストを実装する方法です。都道府県を選択すると、市町村のドロップダウンリストの項目の値が変わるという、 よくあるパターンです。 knockout.js がオススメ よく見かけるのが、選択した値に関係なく、全てのデータを…

ページングされた一覧ページと詳細・編集ページの行き来

ASP.NET MVC で、ページングに対応した一覧ページから、 編集(詳細)ページへ遷移した後、もう一度一覧ページに戻るとき、 表示していた○ページ目へ戻るようにしたい、といった時の 実装方法について書きます。図で表すとこんな感じです。QueryString や セ…

ASP.NET MVC 半角全角の入力値補正

ASP.NET MVC において、自動的に全角→半角にしたり、 両端のスペースを取り除いてくれるようにしよう!という話です。 アプローチ プロパティ毎にモデルバインダーを切り替えるようにします。 また、モデルは、単純な型でなく、複合型を対象とします。 ざっ…

csHtml ファイルを使って RazorEngine

試してみましたのでメモです。 実行 準備 NuGet で、RazorEngine をインストール後、 テンプレートファイル MessageTemplate.csHtml と、モデル用の MessageModel クラスを用意します。・MessageModel クラス public class MessageModel { public string Nam…

API と MVC でモデル検証の挙動が少し違う

モデル検証の時に入るキーが、WEB API と、MVC と違っていたのでメモです。下のように、とあるモデルを引数としたアクションメソッドを定義し、 そのモデルに検証属性を付けます。 // アクションメソッド [HttpPost] public ActionResult Register(RegisterM…

Visual Studio Express 2012 for Web ページインスペクター

Visual Studio Advent Calendar 2012 の 12 日目の記事です。 前日の記事は、ishisaka さんのPython Tools for Visual StudioでDjangoのアプリケーションを作る です。私からは、まだ経験は浅いですが、Visual Studio Express 2012 for Web のページインスペ…

ASP.NET MVC コア拡張部

One ASP.NET Advent Calendar 2012 の 9 日の記事です。 前日の 8 日は ASP.NET MVC と WF4 を一緒に使う際に気をつけるたった一つのこと 後日は 10 日は WebFormっぽいコントロールベスト3こちらになります。ASP.NET MVC は拡張性に優れており、あらゆると…

ValidationAttribute の検証メソッド内で、外部コンポーネントを利用する

ASP.NET MVC の、カスタム検証属性クラス内で、 IRepository 等の外部コンポーネントを利用する方法です。これを上手く使えば、データベースを使った検証でも、 Controller 以降に書いたりせずとも、モデルバインダ対象のプロパティに属性をつけるだけで 実…

JsonResult の Data をテストする時にエラー

Controllerのアクションメソッドにて、 JsonResultのDataを匿名型オブジェクトで設定した時の、 戻り値のテスト方法です。 ある条件下でエラーがでるので、その対処方法を書きます。アクションメソッド内の実装 return Json(new { pesronName = "山田さん", …

ActionLinkは、現在のルートデータを参照してくれる

/Person/Details/1 で表示されるViewに、編集リンクを追加したい時は、 スキャフォールディングにもある通り以下のように書くことができます。 @Html.ActionLink("編集へ", "Edit", new { personId = Model.Id }) が、ルーティングを設定すると @Html.Action…

エラーが起きたらどうなるか? Application_Error()と、HandleErrorAttribute

MVCでカスタムエラーページを実装しようとした時、 調べると以下の2つのコードに到着すると思います。 Web.Config にて <customErrors mode="On" defaultRedirect="~/Error/ErrorDayo" > </customErrors> Glogal.asax.cs にて filters.Add(new HandleErrorAttribute()); // (またはControllerクラスにて [HandleError]) これらの実装は…

@using () {...} を使ったカスタムHtmlヘルパーの作り方

この記事で知れること using (@Html.BeginForm()) {} が何をしているのかわかる using で書けるカスタムHtmlヘルパーを作れる まえがき using を使ったHtmlヘルパーといえば、@Html.BeginForm()です。 Formタグを出力したいとき、Viewでこのように書くと… @u…

ASP.NET MVC で気をつけたいこと

次回ASP.NET MVCでプロジェクトを開発する際に、開発メンバーで「お約束」としたいことをまとめました。 内容は業務アプリ用になっています。 中には超当たり前なことも書いてありますが…。ASP.NET MVC ひとり反省会 こちらの記事もMVCの反省についてまとめ…

Hokuriku.NET ASP.NET MVC入門 の レポートと、第2回にむけて。

2012/08/25(土) 13:00-17:00 に 石川の海みらい図書館にてASP.NET MVC入門が開催されました。 形式は、プレゼン&ハンズオン。講師は2人で参加人数は約15人。また、マイクロソフトエバンジェリストの井上章さんから、 「プログラミングMicrosoft ASP.NET MVC…

MVC4のテンプレート内に追加されたOAuth/OpenId認証

8/15に公開されたMVC4のプロジェクトテンプレートに、 OAuth/OpenId を使った認証が追加されていたので、試してみました。 今までと同様、すでにAccountControllerに認証ロジックが記述してあるので、 数分で実行できます。公式の説明はこちらです。→OAuth/O…

ちょっと異色のRadioButtonHelper

HtmlHelperを使ってラジオボタンを生成することについて、長々と説明します。 RadioButtonヘルパーを使うのか? SelectListは使えないのか? 近々MVC入門もありますし、Htmlタグからアプローチしてみたいと思います。 A. ラジオボタンとは(Html) B. MVCで…

EFMVC より、コントローラのPOSTアクションメソッドの流れを追う

コントローラのPOSTアクションメソッドで、とても綺麗だな〜と思ったコードがありましたので、それについて書きます。 GETなアクションメソッドはまた別の話です。そのコードは EFMVC で書かれているものです。 綺麗だな〜と思ったコード コードはこれです。…

Unityについて追記。Unity.MVC3がありました

以前書いた Project SilkにならってUnityを使ってみる の記事で、Unityの使い方を記載しましたが、 Unity.MVC3 という便利なNugetパッケージがあることを コメント欄より、教えて頂きました。教えて頂きありがとうございます。これを利用すると、IDependency…

Htmlヘルパーをどんどん利用する

この間、納期間近で切羽詰まっていた時でも、 Htmlヘルパーとその単体テストをCleanに記述できました。それは、こちらの記事Unit Testing Html Helpers in ASP.NET MVC3–The Cleaner Way があったからできたものでした。 時間がなくてもHtmlヘルパーとテスト…

ValueProviderを扱うときに気をつけること

MVCでは、いろんなHTTPリクエストの内容を取得することができます。(MVCに限らずですが) クエリ文字列、フォーム送信データ、Cookie、ヘッダー情報、など…。 これらの値は、モデルバインド時にも使用されます。リクエストの値を扱う時に、知っておきたいこと…

Project SilkにならってUnityを使ってみる

はじめに MVCのサンプルプロジェクトであるProject Silkでは、 UnityというIoCフレームワークを利用して関心の分離を行っています。 今回は、Silkのソースを参考にしながら、Unityの利用方法を記載したいと思います。 1.Unityとは 2.Unityの利用方法 3.WebCo…

カスタムセレクターの 作成 と テスト

カスタムセレクターの作り方 例えば あるキーのパラメータが存在する場合のみ、 アクションメソッドの選択を有効とする、独自のセレクターを作るとします。 RequiredParameterです。 属性クラスを作成する アクションメソッドの選択を制御する場合は、 Syste…

帳票出力 In MVC 書き方

MVCにて、ビューにわたすものを、ModelではなくViewModelにする、という書き方がありますが、 帳票出力の場合も、同じように考えると、綺麗に書けました。エクセル出力を例にして、その方法を記載します。 全体像 http://aspnetdesignpatterns.codeplex.com/…

AutoMapper + ViewModel In MVC その2

MVCで書くときのポイント その1.適切なViewModelを作る その2.AutoMapperのテスト、確認 その2です。 マッピングをテストする Mapper.AssertConfigurationIsValid(); AutoMapperを利用する時は、必ずこれを書くべきだと思います。 マッピングされないプ…

AutoMapper + ViewModel In MVC その1

MVCで書くときのポイント、 その1.適切なViewModelを作る その2.AutoMapperのテスト、確認 この2点のうち、その1を書きたいと思います。 その1.適切なViewModelを作る MVCでゴリゴリ書いていると、適切なViewModelを作ることが 大事だなと感じます。…

MvcScaffolding で MVCのControllerテストを効率よく

MvcScaffolding を使えば、 アクションメソッドとそのテスト、他いろいろなものを自動生成してくれます。使ってみた感想と、カスタマイズ方法の一部を記載します。 感想 すごい!らくちん! コードの変更は、t4をいじるだけなので簡単。 ファイルが生成され…

ASP.NET MVC DropDownList

ドロップダウンリストを表示する時、Controller側で SelectListとSelectListItemのどちらを使えばよいかわからなかった。 結論 どちらでもいい。 けど、IEnumerableを使った方が後々良いかも。 SelectList使う Controller [HttpGet] public ActionResult Ind…