2013-03-17 19 views
5

Bu sorgulamadaki değeri DTO nesnesine almanın bir yolunu bulmaya çalışıyorum.Bir parametrenin querystring içindeki bir DTO özelliğine eşleme değeri

example.org?code=abc 

Kod değerini AuthorizationCode özelliğine eşlemeliyim (parametre adları da eşleşmiyor). Böyle yönlendirmeyi denedim ama işe yaramıyor.

[Route("?code={AuthorizationCode}", "GET")] 
public class Registration 
{ 
    public string AuthorizationCode { get; set; } 
} 

Bu bir geri arama URL'si olduğu için, onu değiştirme şansım yok. Bunu nasıl başarabilirim?

cevap

9

Bunu daha önce okuyun. answer on ServiceStack's Routes. Rotalar yalnızca /path/info'u içermelidir, hiçbir zaman tüm DTO isteklerini kendiliğinden otomatik olarak doldurabilen queryString'i asla içermemelidir.

Eğer sadece DTO bir kod özelliği varsa

gibi: /registration?code=abc:

[Route("/registration", "GET")] 
public class Registration 
{ 
    public string Code { get; set; } 
} 

Zaten bunu doldurabilirsiniz.

Aksi SorguDizesi ve DTO için farklı adlar olan ısrar etmek istiyorsanız, bir [DataContract] olarak DTOs açıklamalar ekleyerek bir Alias ​​oluşturmayı deneyebilirsiniz:

[Route("/registration", "GET")] 
[DataContract] 
public class Registration 
{ 
    [DataMember(Name="code")] 
    public string AuthorizationCode { get; set; } 
} 

iki şekilde de her zaman doğrudan SorguDizesi erişebilir senin hizmetler veya filtreler:

public MyService : Service 
{ 
    public object Post(Registration request) 
    { 
     var code = base.Request.QueryString["code"]; 
    } 
} 
+0

Hızlı cevabınız için teşekkür ederiz. Geri arama URL'ime başka bir segment ekleyebilirim, ancak diğer geri aramalar sadece querystring’te geçirdikleri parametrelerden farklı olacaktır. Tüm DTO'larda aynı Rota özniteliğini kullanmalı ve Get/Post işleyicilerinde hangisinin kullanılacağına karar vermeliyim? –

+0

Soruyu anlamıyorum, soruyu, yapmaya çalıştığınız bir esere örnek veya bağlantı sağlamak için günceller misiniz? – mythz

+0

Yani, sorgu dizesi param adları için büyük/küçük harfe duyarlı değil mi ?! – cvsguimaraes

İlgili konular