2017-02-17 55 views
1

有沒有辦法強制服務堆棧驗證器使用流利的驗證插件發射駱駝情況下的字段名稱屬性?我已經配置了ServiceStack驗證器可以發送駝峯字段名稱嗎?

JsConfig.EmitCamelCaseNames = true; 

讓我的打字稿類型在駱駝的情況下,但所有驗證消息/錯誤在PascalCase來通過。我真的很想在我的json響應中保留camelCase,但我確實希望能夠使字段名稱與錯誤消息字段名稱匹配。這可能嗎?

回答

0

不是真的以下,當EmitCamelCaseNames = true返回的JSON使用駝峯屬性名稱,但數據仍保留在PacalCase與請求DTO屬性名稱匹配,e.g:

{ 
    "responseStatus": { 
    "errorCode": "InclusiveBetween", 
    "message": "'Age' must be between 1 and 120. You entered 0.", 
    "errors": [ 
     { 
     "errorCode": "InclusiveBetween", 
     "fieldName": "Age", 
     "message": "'Age' must be between 1 and 120. You entered 0.", 
     "meta": { 
      "PropertyName": "Age", 
      "From": "1", 
      "To": "120", 
      "Value": "0" 
     } 
     } 
    ] 
    } 
} 

什麼JSON響應有問題?

+0

那麼,所有具有驗證錯誤的JSON響應都具有字段名稱和元屬性名稱在Pascal情況下的問題。在瀏覽器中使用JavaScript客戶端的dtos時,這只是一個煩惱。我們有一個使用camelCased對象的編碼約定,所以我們通過轉向EmitCamelCaseNames == true來發送camelCase中的所有類型。我們還需要支持c#客戶機,這樣我才能明白爲什麼全局性地將數據中的屬性名稱更改爲pascal大小寫可能不太合適。我們可能不得不放棄我們的編碼標準,並在dtos中使用PascalCase。 – on3al

+0

@ on3al camelCase約定隻影響屬性名稱,它不會影響其中包含的數據。這是[Meta Dictionary]中的Pascal案例(https://github.com/ServiceStack/ServiceStack/blob/8ecf9df8c19b55c3b5a76341f29215b37d6d0a9c/src/ServiceStack.Interfaces/ResponseStatus.cs#L73),因爲它是一本字典,密鑰也是數據。 – mythz