データのリストを表示するインデックス ページがあります。リストは、ドロップダウン リストから選択してフィルタリングできます。これは問題なく動作します。ドロップダウンの最初の項目には、値が空白で、「(すべてのユーザー)」というテキストがあります。したがって、これは期待どおりに機能します。フィルター処理するアイテムを選択しない場合、リスト内のすべての値が表示されます。このためのかみそりは非常に単純です。
@using (Html.BeginForm())
{
@Html.Label("userName", "View user:")
@Html.DropDownList("userName", ViewBag.UserName as SelectList, new { onchange = "this.form.submit()" })
}
ページ上のデータのリストを表示することに加えて、現在フィルタリングされている項目のテキスト ファイルをダウンロードできます。このためのかみそりも非常に単純です。
@using (Html.BeginForm("Download", "Checkout"))
{
@Html.Hidden("userName", Request["userName"])
<input type="submit" value="Download Metadata from Checked Out Files" />
}
これは、フィルター ドロップダウンで何かが選択されている場合に正しく機能します。ただし、何も選択されていない場合、Request["userName"] は "System.Web.Mvc.SelectListItem" を返します。何も選択されていないときにドロップダウンリストが表示されるので、単に空白にしたいです。System.Web.Mvc.SelectListItem の値がダウンロード アクションに渡され、フィルター値として扱われます。
したがって、問題は、フィルタ ドロップダウンで空白の選択を「System.Web.Mvc.SelectListItem」と間違えないようにする方法です。