2

我有一个现有的应用程序,它发送一个带有名为“过滤器”的参数的请求。'filters' 参数包含一个 JSON 编码的字符串。例子:

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

使用 ServiceStack,我想将它绑定为 C# 对象(网格类)上的属性。有没有首选的方法来处理这个?以下是我能想到的选项。我不认为“感觉”是正确的。

选项 1: 我确实有一个“ServiceModel”项目,这会创建一个我不太喜欢的依赖项。
在 AppHost.Configure() 方法中添加

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

选项2: 似乎有点“hacky”

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,您可以从您的请求服务过滤器内部访问它,例如:

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

注意:DTO 上的接口是不好的做法

于 2012-12-13T19:07:58.453 回答