我正在尝试找到一种方法来将此查询字符串中的值传递给我的DTO对象。
example.org?code=abc
我必须将代码值映射到AuthorizationCode属性(参数名称也不匹配)。我试过像这样的路由,但它没有用。
[Route("?code={AuthorizationCode}", "GET")]
public class Registration
{
public string AuthorizationCode { get; set; }
}
由于这是一个回调网址,因此我没有机会对其进行更改。我怎么能做到这一点?
答案 0 :(得分:10)
早些阅读answer on ServiceStack's Routes。路由应该只包含它们永远不应包含queryString的/path/info
,它们可以自动填充所有请求DTO。
如果你在DTO中只有一个代码属性,如:
[Route("/registration", "GET")]
public class Registration
{
public string Code { get; set; }
}
您可以使用以下代码填充:/registration?code=abc
。
否则,如果您想坚持使用queryString和DTO的不同名称,可以尝试通过将您的DTO注释为[DataContract]
来创建别名:
[Route("/registration", "GET")]
[DataContract]
public class Registration
{
[DataMember(Name="code")]
public string AuthorizationCode { get; set; }
}
无论哪种方式,您都可以直接在您的服务或过滤器中访问QueryString:
public MyService : Service
{
public object Post(Registration request)
{
var code = base.Request.QueryString["code"];
}
}