Ich habe ein Viewmodell wie unten beschrieben in eine Steuerung zu übergeben.MVC ViewModel und seitenweise Ergebnisse
[HttpPost]
public JsonResult GetSearchResultsJson(SearchCriteria searchCriteria)
{
}
such ist definiert als:
public class SearchCriteria
{
public SearchData searchData { get; set; }
public SearchMode searchMode { get; set; }
}
Wo ist Searchmode:
public class Searchmode
{
public int? mode { get; set; }
public int? pageNumber { get; set; }
public int? pageSize { get; set; }
}
und hat 61 search Eigenschaften, die definieren, welche Elemente zu suchen sind.
public class SearchData
{
public string name {get;set;}
....
public int age {get;set;}
}
Ich befüllen ein Objekt mit jQuery und übergeben das an den Controller. .NET konvertiert dieses Objekt in ein Objekt vom Typ SearchCriteria. Alles funktioniert, aber wenn das PagedListPager-Steuerelement gerendert wird, wie emuliert ich die jQuery, die zum Erstellen des Objekts verwendet wird?
Im Moment habe ich den folgenden Code haben:
@Html.PagedListPager(Model.DocumentsPaged, pageNumber => Url.Action("GetSearchResultsJson", XXXXXXXXXXXXXXXXXXXXXXX),pLRO)
Und wissen nicht, was in dem Bit als XXXXXXXXXXXXXXXXXXXXXXX markiert zu setzen.
Innerhalb von jQuery kann ich die pageNumber -Eigenschaft des SerachMode-Objekts ändern, und dies liefert mir die richtige Seite, aber genau diese Eigenschaft muss ich innerhalb des Html.PagedListPager-Helpers aktualisieren.
Sie müssen generieren route (query string) Wert für jede Eigenschaft - 'Url.Action (" GetSearchResultsJson ", neu {searchData.name = xxx, searchData.age = xxx, ....})'. Beachten Sie, wenn Sie alle diese Eigenschaften in einer Klasse kombiniert haben, dann kann es nur 'Url.Action (" GetSearchResultsJson ", Model.Criteria) sein, vorausgesetzt das Modell enthält eine Eigenschaft' SearchCriteria Criteria'. Aber wenn Sie wirklich 61 Eigenschaften haben (plus die 3 in 'searchMode'), dann ist es sehr wahrscheinlich, dass Sie die Abfragezeichenfolgegrenze überschreiten und eine Ausnahme auslösen. –