2016-04-27 30 views
0

我有一個簡單的控制器,接受來自支付系統的響應。可以從屬性讀取參數FromUri嗎?

 public async Task<IHttpActionResult> Pending([FromUri] DepositResponse response) 
     { 
      Logger.LogInfo(JsonConvert.SerializeObject(response)); 

      return Ok(response); 
     } 

然而,存款響應具有非常醜陋和非標準化的參數。我無法控制,因爲這是支付系統發送的。

public class DepositResponse 
{ 
    public string ppp_status { get; set; } 

    public string ExErrorCode { get; set; } 

    public string PPP_TransactionID { get; set; } 

    public string merchant_site_id { get; set; } 

    //etc 
} 

結果,ReSharper的抱怨,這不符合規則所選擇的名字,我想改變它在項目的其餘部分中的所有類相匹配。

是否有我可以使用的屬性,或者我可以創建一個讓FromUri明白迴應的屬性?

例如

public class DepositResponse 
{ 
    [FromUriName("ppp_status")] 
    public string pppStatus { get; set; } 

    [FromUriName("ExErrorCode")] 
    public string exErrorCode { get; set; } 

    [FromUriName("PPP_TransactionID")] 
    public string pppTransactionId { get; set; } 

    [FromUriName("merchant_site_id")] 
    public string merchantSiteId { get; set; } 

    //etc 
} 

我找不到這樣的例子在線,但我想與發送垃圾外部系統打交道時,它可以是非常有用的...

什麼想法?

回答

0

您可以使用下面的模型

公共類DepositResponse {

[JsonProperty(PropertyName="ppp_status")] 
public string pppStatus { get; set; } 

[JsonProperty(PropertyName="ExErrorCode")] 
public string exErrorCode { get; set; } 

[JsonProperty(PropertyName="PPP_TransactionID")] 
public string pppTransactionId { get; set; } 

[PropertyName(PropertyName="merchant_site_id")] 
public string merchantSiteId { get; set; } 

//etc 

}

+0

請記得投票,如果它可以幫助你 – suulisin

+0

這當然是行不通的。你試過了嗎? 我正在做一個HTTP Get,所以參數需要完全匹配屬性的名稱。 我的解決方案將涉及一些自定義聯編程序或「FromUri」的擴展名。 – Nick