0

JQGrid と MVC4 を使用して高度な検索を実装しようとしています。私のモデルの定義は問題ないようです(以下のように):

public class SearchModel
{
    public string sidx { get; set; } 
    public string sord { get; set; } 
    public int page { get; set; } 
    public int rows { get; set; } 
    public bool _search { get; set; } 
    public string searchField { get; set; } 
    public string searchOper { get; set; } 
    public string searchString { get; set; }
    public FilterModel filters { get; set; }
}
public class FilterModel
{
    public string groupOp { get; set; }
    public List<RuleModel> rules { get; set; }
}
public class RuleModel
{
    public string field { get; set; }
    public string op { get; set; }
    public string data { get; set; }
}

ただし、UserName と FirstName を実行して検索すると、受信側のコントローラーでフィルターが null として表示されます。次に、(Request.Params)["filters"] をチェックすると、次のテキストが表示されます -

"{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"UserName\",\"op\":\"eq\",\"data\":\"a\"},{\"field\":\"FirstName\",\"op\":\"eq\",\"data\":\"b\"}]}"

_search が true であることを示しています。何か不足していますか?

4

2 に答える 2

0

リクエストに匿名の JSON オブジェクト (名前なし) が含まれていることを正しく覚えていれば、コントローラーでは 1 つのSearchModel引数を渡すことができず、すべての引数を明示的に追加する必要があります。

ActionName (string sidx, string sord, int page, ..., FilterModel filters)

別の方法として、リクエスト パラメータを 1 つの SearchModel オブジェクトにラップするカスタム モデル バインダーを作成することもできます (これは非常に単純です)。

于 2014-09-07T08:38:50.197 に答える