jqueryとajaxを使用して検索を行い、ページを更新するMVC4アプリに取り組んでいます。通常、検索するには、javascript オブジェクトを作成し、それを ApiController に投稿します。ここで、投稿パラメーターが .NET 検索入力オブジェクトにマップされます。
同じ JavaScript 検索オブジェクトをサーバーに送信する必要がありますが、GET 要求として送信する必要があるため、$.param() を使用してオブジェクトをシリアル化しています。
クエリ文字列を .NET 検索入力オブジェクトに逆シリアル化する簡単な方法はありますか?
作成されるクエリ文字列の簡略化されたバージョンを次に示します。
Search[ListId]=41&Search[Query]=test&Search[SortBy]=Location&Search[SortDirection]=Descending&Search[UserTypes][]=2&Search[UserTypes][]=5&Search[UserTypes][]=9&Export[PDF]=false&Export[XLS]=true&Export[XML]=true
Ands は、逆シリアル化しようとしている SearchInput オブジェクトです。
public class SearchInput
{
public Search Search { get; set; }
public Export Export { get; set; }
}
public class Search
{
public int ListId { get; set; }
public string Query { get; set; }
public ListViewConfig.SortBy SortBy { get; set; }
public SortDirection SortDirection { get; set; }
public List<int> UserTypes { get; set; }
}
public class Export
{
public bool PDF { get; set; }
public bool XLS { get; set; }
public bool XML { get; set; }
}
SortBy と SortDirection は列挙型です。