Devo creare un collegamento basato sui miei criteri di ricerca. Per esempio:Posso passare un modello di vista al link azione per generare un percorso?
localhost/Search?page=2&Location.PostCode=XX&Location.Country=UK&IsEnabled=true
parametri in questo link sono i valori delle proprietà nella mia SearchViewModel.
Idealmente mi piacerebbe avere qualcosa sulle linee di:
@Html.ActionLink("Search","User", Model.SearchCriteria)
È questo supportata di default o devo passare proprietà del mio modello di vista nel tipo di oggetto RouteValueDictionary e quindi utilizzare tale?
Il mio obiettivo è scrivere un helper di paging che generi numeri di pagina e aggiunga i parametri dei criteri di ricerca ai collegamenti generati.
E.g.
@Html.GeneratePageLinks(Model.PagingInfo, x => Url.Action("Index"), Model.SearchCriteria)
ho combinato vostre soluzioni con suggerimento PRO ASP.NET MVC 3 book e si è conclusa con la seguente:
Helper per la generazione di link. parte interessante è il parametro pageUrlDelegate che viene poi utilizzato per richiamare Url.Action per i collegamenti che generano:
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfoViewModel pagingInfo,
Func<int,String> pageUrlDelegate)
{
StringBuilder result = new StringBuilder();
for (int i = 1; i <= 5; i++)
{
TagBuilder tagBuilder = new TagBuilder("a");
tagBuilder.MergeAttribute("href", pageUrlDelegate(i));
tagBuilder.InnerHtml = i.ToString();
result.Append(tagBuilder.ToString());
}
return MvcHtmlString.Create(result.ToString());
}
Poi nel modello di visualizzazione:
@Html.PageLinks(Model.PagingInfo, x => Url.Action("Index","Search", new RouteValueDictionary()
{
{ "Page", x },
{ "Criteria.Location.PostCode", Model.Criteria.Location.PostCode },
{ "Criteria.Location.Town", Model.Criteria.Location.Town},
{ "Criteria.Location.County", Model.Criteria.Location.County}
}))
)
Non sono ancora felice con i nomi di proprietà in stringhe, ma per ora lo dovrò fare.
Grazie :)
Hi Darin, grazie per la vostra risposta. Probabilmente userò il tuo secondo consiglio e creerò un aiuto per generare link di pagina. –
Si prega di vedere la modifica –