Qual è il metodo migliore per conservare i risultati di un modulo (modello di visualizzazione) nella pagina dei risultati di ricerca?ASP.NET MVC RouteValueDictionary e oggetto complesso
Ho un modulo di ricerca che contiene checkbox. Questa forma è costruire utilizzando un modello di vista come
public class SearchViewModel
{
public string Name { get; set; }
public string[] Colors { get; set; }
}
Quando questo modello viene vista postback Io uso i valori per costruire una query (utilizzando EF). I risultati vengono trasformati in 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));
}
}
Ora che i risultati vengono visualizzati Vorrei utilizzare Html.PagedListPager e RouteValueDictionary per creare paging.
@Html.PagedListPager((IPagedList)Model, page => Url.Action("Results", new RouteValueDictionary(ViewBag.SearchViewModel)))
Tuttavia; l'URL creato è simile al seguente:
http://localhost:5139/search?Name=test&Colors=System.String[]&PageIndex=0
I valori per Colori non sono il tipo. Speravo l'URL sembra più:
http://localhost:5139/search?Name=test&Colors=[Blue,Pink,Yellow]&PageIndex=0
- Qual è il metodo migliore per mantenere i risultati di un post modulo (vista del modello) in tutta pagina dei risultati di ricerca?
- Can RouteValueDictionary può supportare oggetti complessi?
- Devo usare qualcosa come unbinder
- Sarebbe meglio usare ViewData o Session?
Wow. Questa è la mia domanda esatta. +1 –