しばやん雑記

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

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

ASP.NET MVC の最近のバージョンには OutputCache と子アクションを組み合わせた時に、OutputCacheLocation の値を適切に見てくれないバグがありました。

例えば、グローバルフィルタで OutputCache を以下のように設定します。

// 出力キャッシュを無効化したい
GlobalFilters.Filters.Add(new OutputCacheAttribute
{
    Location = OutputCacheLocation.None
});

そして、ビューで子アクションのレンダリングを行おうとすると、必ず例外が投げられます

@* ここで OutputCache の設定がおかしいと言われる *@
@Html.Action("ChildAction")

原因は子アクションの場合に OutputCache 属性が OutputCacheLocation の値をチェックせずに、常にキャッシュを行おうとすることにあります。

この問題は 1 年前にかなり大事になったバグの原因で、それ以降もいろいろと自分を困らせてくれました。なので、CodePlex に Issue の追加と Pull Request を送っておきました。

ASP.NET MVC / Web API / Web Pages - View Issue #1411: OutputCache to ignore options in ChildAction within

そして、それが今日 master にマージされて、5.1 ベータから直るようです。やったね。

ASP.NET MVC / Web API / Web Pages - Source Code

以前のコミットとは異なり、今回は素直にマージされているのでコミットログに名前が残ってました。こういった部分で自分の名前が残るのは嬉しいですね。

この間まで参加していた MVP Global Summit で Scott Guthrie 氏と話をした時に、これからも Windows Azure と ASP.NET へのコントリビュートを頑張りたいと約束したので、いろいろと頑張っていこうと思います。