メモ:Request でつまづく
執筆日時:
Request
QueryString 、Form、Cookies、ServerVariables の各コレクションから指定したオブジェクトを取得します。
Default.cshtml?Hoge=Fuga というリクエストがあった時、
Request["Hoge"] => "Fuga"
が得られる。つまり、
Request.QueryString["Hoge"] => "Fuga"
これと同様。ちなみに、存在しないキーを指定すると
Request["HogeHoge"] => string.Empty
が返る。null じゃないのか! null だったら、
var text = Request["Hoge"] ?? "初期値";
って書けるのになぁ。まぁ、いろいろ大人の事情があるんだろう。
Request.QueryString と Request.Form
QueryString でも Form でも "Hoge" というキーが含まれているとき、Request["Hoge"] では Request.QueryString["Hoge"] の値が返る。
つまり、優先度は
QueryString > Form
であるらしい。QueryString 、Form、Cookies、ServerVariables がどの順番で優先されるのかは知らないけれど、まぁ、この順番なんだろうなって気はしてる(試してない)。
ついつい Form[] を多用するのだけれど、こういうのが分かってないとたまにハマるみたい orz
Request.QueryString[] におけるキーの重複
では、
Default.cshtml?Hoge=1&Hoge=2&Hoge=3
で Request["Hoge"] すると何が返るんだろう? めんどくさくて試してないけど、たぶんこれは 3 じゃないかと思う。なんとなく。
気が向いた時の宿題にしておこう。