検索結果ページ全体にフォームポスト(ビューモデル)の結果を保持する最善の方法はありますか?ASP.NET MVC RouteValueDictionaryとComplexオブジェクト
私はチェックボックスを含む検索フォームを持っています。この形式は、このビューモデルをポストバック私は(EFを使用して)、クエリを構築するために値を使用して取得すると
public class SearchViewModel
{
public string Name { get; set; }
public string[] Colors { get; set; }
}
のようなビューモデルを使用して構築されます。結果はPagedListに変換されます。
public class SearchController : Controller
{
public ActionResult Index()
{
//this displays the search form.
return View();
}
public ActionResult Results(string game, SearchViewModel vm)
{
//this displays the results
ViewBag.SearchViewModel = vm;
var matches = _repository.AsQueryable()
.ColorOr(vm.Colors)
.WhereIf(vm.Name.IsNotEmpty(), x => x.Name.Contains(vm.Name.Trim()));
return View(matches.ToPagedList(1, 10));
}
}
結果が表示されたら、Html.PagedListPagerとRouteValueDictionaryを使用してページングを作成します。
@Html.PagedListPager((IPagedList)Model, page => Url.Action("Results", new RouteValueDictionary(ViewBag.SearchViewModel)))
ただし、作成されるURLは次のようになります。
http://localhost:5139/search?Name=test&Colors=System.String[]&PageIndex=0
色の値は、値ではなくタイプになります。私は、URLがより多くのようになります期待していた。
http://localhost:5139/search?Name=test&Colors=[Blue,Pink,Yellow]&PageIndex=0
- 検索結果ページ間でフォームポスト(ビューモデル)の結果を保持するための最良の方法は何ですか?
- RouteValueDictionaryは複雑なオブジェクトをサポートできますか?
- 何かを使用する必要がありますunbinder
- ViewDataまたはセッションを使用する方がよいでしょうか?
:のようにリンクになり
。これは私の正確な質問です。 +1 –