しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

MVC

Knockout.js と ASP.NET MVC の組み合わせ時にモデルバインディングが腐る件

今日も Knockout.js を使って ASP.NET MVC に POST するようなコードを書いていたのですが、モデルバインダが意図したとおりに値をバインドしてくれない時がありました。まずは ASP.NET MVC 側のコードを見ていきましょう。難しいことはしてません。 public …

ASP.NET MVC でページャーやパンくずリストを作るときには部分ビューなどを使うと便利

Twitter で酢酸先生が ASP.NET MVC でのビューの使い回しについて悩んでいたので、久しぶりに ASP.NET についてブログを書きます。しばやんサイトに無限クロールして地獄を味合わせるか…。あ、asp,net mvcで複数のページの任意の場所にカスタムコントロール…

ASP.NET 関係で最近アップデートが行われたパッケージまとめ

最近は Windows Azure Web サイトばかり弄っていたので ASP.NET 周りが疎かになってました。先日 ASP.NET MVC のマイナーアップデートが行われていたことに気が付かなかったのがショックだったので、関係しそうなパッケージのアップデートをまとめてみます。…

ASP.NET MVC 5 での新規アプリケーション開発時に便利な設定をまとめてみた

自分が毎回新規で ASP.NET MVC アプリケーションの開発を始めるときに忘れるので、今までブログに書いた分をまとめてみました。ASP.NET MVC 5 と限定してあるのは、5 より前のバージョンではバグ持ちの設定を紹介しているからです。 Razor のみを使う ViewEn…

ASP.NET MVC 5.1 や Web API 2.1 がリリースされました

そのままですが、ASP.NET MVC 5.1 や Web API 2.1 が正式リリースとなりました。Announcing the Release of ASP.NET MVC 5.1, ASP.NET Web API 2.1 and ASP.NET Web Pages 3.1 - .NET Web Development and Tools Blog - Site Home - MSDN BlogsVisual Studio…

ASP.NET MVC で条件付きの検証を行う属性とモデルバインダを実装してみた

昔から ASP.NET MVC の検証を条件付きで実行したいと思っていた人生でした。言葉で説明すると分かりにくいので、ヨドバシのオンラインショップのフォームがサンプルとして都合良かったので拾ってきました。このフォームの場合、チェックの有無で検証の有無も…

Sitecore と ASP.NET MVC 間でデバイスクッキーを連携させてみた

これは Sitecore Advent Calendar 2013 - Adventar の 12 日目の記事です。以前に Sitecore と ASP.NET MVC のハイブリッドなサービスの開発をお手伝いした時に、どうしても Sitecore のデバイスクッキーを ASP.NET MVC と共有化させる必要がありました。デ…

ASP.NET MVC 5.1 や Web API 2.1 のリリース候補版が公開されました

今朝、ASP.NET チームのお偉いさんである Scott Hunter が ASP.NET MVC 5.1 / Web API 2.1 / Web Pages 3.1 のリリース候補版を公開したとツイートしていたので、ちょっと内容を書いてみようと思います。公式のブログでもしっかりと新機能の説明がされている…

ASP.NET でタブレット以外を判別する方法と Display Mode への応用

もう Facebook では 1 年の振り返りが始まっている今日この頃、いかがお過ごしでしょうか。世間では Advent Calendar のタスキ繋ぎが全力で行われていますが、初日でその役目を終えた私はのんびりと過ごしています。とか、書くと本気で本気で刺されそうなの…

ASP.NET MVC に投げた 2 つ目の Pull Request がマージされました

ASP.NET MVC の最近のバージョンには OutputCache と子アクションを組み合わせた時に、OutputCacheLocation の値を適切に見てくれないバグがありました。例えば、グローバルフィルタで OutputCache を以下のように設定します。 // 出力キャッシュを無効化し…

ASP.NET MVC 5.1 の新機能を Nightly Build で試してみた

少し前に Visual Studio 2013 と同時に ASP.NET MVC 5 がリリースされましたが、既に開発チームは ASP.NET MVC 5.1 の開発を進めています。そして aspnetwebstack は MyGet で署名済みの Nightly Build を公開してくれているので、誰でも簡単に試せるように…

ASP.NET 4.5 からルーティングで生成される URL を小文字に出来るというお話

ASP.NET MVC でデフォルトのテンプレートと同じように作ると、その URL は以下のように大文字が含まれるものが生成されてしまいますよね。しかし、SEO 的には URL は小文字で統一して欲しいです。今までは Url.Action や Html.ActionLink などで小文字を指定…

ASP.NET MVC に投げた Pull Request がマージされました

DropDownListFor と ViewBag を組み合わせた時の問題 - しばやん雑記ASP.NET MVC / Web API / Web Pages - Source Code

ASP.NET MVC 5 では X-Frame-Options が自動で出力される時がある

タイトルの通り、ASP.NET MVC 5 では X-Frame-Options: SAMEORIGIN が自動で出力される時があります。出力される条件ですが、Html.AntiForgeryToken を使った時になります。AntiForgeryToken は Web Pages の CSRF 対策クラスを使っているので、Web Pages で…

ASP.NET で自動的に発行されるクッキーの名前を変更する方法

今日はちょっとした ASP.NET のクッキーに関する小ネタです。ASP.NET は特別な設定などをしなくても自動的にクッキーを発行して、認証状態やセッション、そして CSRF 対策を行ってくれます。これは非常に便利なんですが、その時に発行されるクッキーの名前が…

Visual Studio で発行時に Razor のプリコンパイルを行う方法

Web サイトとかにデプロイを行う時に利用する Web 発行には、ビューのプリコンパイルを実行する機能があるのですが、これを使えば ASP.NET MVC の Razor ビューもプリコンパイル出来ます。プリコンパイルすると何が嬉しいかという話ですが、初回アクセス時に…

JAZUG 3 周年の LT 大会向けのアプリを作って発表してきた

お前、JAZUG に参加してないだろと言われそうですが、LT 大会でトップバッターかつ、投票用のアプリを作って発表してきました。スライドはこんな感じ。 JAZUG LT アプリを作った話 from Tatsuro Shibamura スロットリングが発生するとか、バグがあって失敗す…

ASP.NET MVC の Facebook テンプレートを使って Graph API を便利に使う

ASP.NET MVC の Facebook テンプレートは Facebook SDK for .NET をベースに、色々とアプリを作る上で便利そうな機能*1が実装されています。signed_request のデコードや認証周りを自動でやってくれるんですが、FacebookClient クラスに対する拡張メソッドや…

ASP.NET MVC で Facebook アプリを作る時には気をつけろ

最近は ASP.NET MVC 向けの Facebook アプリケーションテンプレートを使って、Facebook アプリの開発をしていたりするんですが、この Microsoft.AspNet.Mvc.Facebook というライブラリが非常に使い勝手が悪く、特定のアプリしか想定していない作りになってい…

ASP.NET MVC 5 で追加された IAuthenticationFilter と Authorize 属性の関係

ASP.NET MVC 4 までは IAuthorizationFilter インターフェースだけが用意されていましたが、MVC 5 からは IAuthenticationFilter インターフェースが追加されました。名前が似ている二つのインターフェースですが、機能としては明確に異なっているので ASP.N…

Build でリリースされた ASP.NET のアップデート

Build 2013 のキーノートでは Windows 8.1 と Visual Studio 2013 の話題が中心でしたが、今回は Visual Studio 2013 で追加された ASP.NET のアップデートに関してまとめておきます。既に ASP.NET の公式サイトでは記事が公開されています。ASP.NET vNext |…

ASP.NET MVC 4 で理想的なスマートフォン対応サイトを作成する方法

ちょっと前にこんな記事が Twitter や Facebook で話題になっていました。PC とスマホ両対応しているサービスは要注意かもしれません。グーグル、スマホ対応が不適切なサイトの検索順位を引き下げへ - CNET JapanTwitter や Facebook でシェアされた URL を…

ASP.NET Web Stack が一斉に更新されています

何気なく NuGet で Update-Package を実行したら大量にパッケージが更新されたので、よく見てみると ASP.NET Web Stack というか、OSS 部分が全てアップデートされていました。以下のパッケージが 4.0.20710.0 -> 4.0.30506.0 といった感じにビルドナンバー…

ASP.NET MVC 4 で複数の Display Mode を組み合わせて使ってみる

この方法の欠点としては別の Display Mode との共存が出来ないことです。なのでスマートフォンへの対応が必要ない、完全に PC 向けのページなら対応可能かと思います。 ASP.NET MVC 4 の Display Mode を使って多言語対応を試してみた - しばやん雑記 と書い…

ASP.NET MVC 4 の Display Mode を使って多言語対応を試してみた

ASP.NET MVC 4 というか Web Pages 2 で追加された Display Mode ですが、一般的にはスマートフォンやその他デバイス向けにビューを切り替えるために使われることが多いと思います。しかし、今回はデバイスの種類ではなく、ブラウザの言語設定にしたがってビ…

ASP.NET MVC で指定した値が入力されているか検証する属性を作ってみた

よく会員登録などのフォームにある、会員規約に同意しますというチェックボックスってありますよね。ASP.NET MVC でチェックされていない時にエラーを表示する場合、Required 属性を使えば対応出来そうだと考える人は多いと思います。 public class FormMode…

SwissKnife.Mvc の 0.0.2 を NuGet でやっと公開しました

NuGet Gallery | SwissKnife.Mvc 0.0.2もうちょっと説明とかしっかり書けという感が満載なんですが、とりあえずいろいろと実装したかなと思ったので公開してみました。リファレンスなんて立派なものはまだないので、このエントリに基本的な機能を書いておき…

ASP.NET MVC 4 で現在の Display Mode を見てアクションを振り分ける

ASP.NET MVC 4 アプリケーションのスマートフォン対応は、理想的には ASP.NET MVC 4 というか Web Pages 2 で追加された Display Modes だけで解決できればいいんですが、今回はどうしてもアクションを分けたくなりました。しかし、他のページはビューだけ切…

IIS と Vary ヘッダと HTTP 圧縮モジュールのバグ

id:Waquesseix この記事を読んで早速vary: user-agentを追加しようと思ったら、なんかバグでvaryが変えられない(圧縮をオフにしない限り)みたいでがっくりしました。。。 ASP.NET でカスタム HTTP ヘッダを追加する方法 - しばやん雑記 そういえば、ASP.NET …

ASP.NET MVC 4 のブラウザオーバーライド設定の保存先をカスタマイズする

ASP.NET MVC 4 のブラウザオーバーライドを JavaScript から設定する - しばやん雑記 で ASP.NET MVC 4 というか Web Pages 2 のブラウザオーバーライド機能はクッキーを使って実装されていると紹介しましたが、実はこの User-Agent を保存する部分は開発者…