2

'filters'という名前のパラメーターを使用してリクエストを送信する既存のアプリケーションがあります。'filters'パラメーターには、JSONでエンコードされた文字列が含まれています。例:

[{"dataIndex":"fieldName", "value":"fieldValue"}, {"dataIndex":"field2", "value":"value2"}]. 

ServiceStackを使用して、これをC#オブジェクト(クラスGrid)のプロパティとしてバインドしたいと思います。これを処理するための好ましい方法はありますか?これが私が考えることができるオプションです。どちらも「感じ」が正しいとは思いません。

オプション1: 「ServiceModel」プロジェクトがあります。これにより、依存関係が作成されますが、これはあまり好きではありません。
AppHost.Configure()メソッドに追加します

RequestBinders[typeof(Grid)] => httpReq => { 
  return new Grid() { 
    Filters = new ServiceStack.Text.JsonSerializer<IList<Filter>>().DeserializeFromString(httpReq.QueryString["filters"])
  }
}

オプション2: 一種の「ハッキー」のようです

public class Grid
{
  private string _filters;
  public dynamic Filters { 
    get 
    {
      ServiceStack.Text.JsonSerializer<IList<Filter().DeserializeFromString(_filters);
    }
    set
    {
      _filters = value;
    }
  }
}
4

1 に答える 1

0

JSV形式を使用して、ServiceStackで複雑なオブジェクトを送信できます。

QueryStringを介してJSONを送信する場合は、ServiceofRequestフィルター内から次のようにアクセスできます。

public object Any(Request req) {
    var filters = base.Request.QueryString["Filters"].FromJson<List<Filter>>();
}

注:DTOのインターフェースは悪い習慣です。

于 2012-12-13T19:07:58.453 に答える