有没有办法将所有枚举显示为swagger中的字符串值而不是int值?
我希望能够提交POST操作并根据其字符串值放置枚举,而不必每次都查看枚举.
我试过,DescribeAllEnumsAsStrings但服务器接收字符串而不是枚举值,这不是我们正在寻找的.
有人解决了这个吗?
编辑:
public class Letter
{
[Required]
public string Content {get; set;}
[Required]
[EnumDataType(typeof(Priority))]
public Priority Priority {get; set;}
}
public class LettersController : ApiController
{
[HttpPost]
public IHttpActionResult SendLetter(Letter letter)
{
// Validation not passing when using DescribeEnumsAsStrings
if (!ModelState.IsValid)
return BadRequest("Not valid")
..
}
// In the documentation for this request I want to see the string values of the enum before submitting: Low, Medium, High. Instead of 0, 1, 2
[HttpGet]
public …Run Code Online (Sandbox Code Playgroud) 我在 API 上声明了一个枚举,如下所示:
public enum Currencies
{
RON = 1,
USD,
EUR,
GBP,
CHF,
PLN,
CAD,
HUF,
NOK,
SEK
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用 NSwag 生成 HttpClient 时,它从 0 开始,我得到:
public enum Currencies
{
[System.Runtime.Serialization.EnumMember(Value = @"RON")]
RON = 0,
[System.Runtime.Serialization.EnumMember(Value = @"USD")]
USD = 1,
[System.Runtime.Serialization.EnumMember(Value = @"EUR")]
EUR = 2,
[System.Runtime.Serialization.EnumMember(Value = @"GBP")]
GBP = 3,
[System.Runtime.Serialization.EnumMember(Value = @"CHF")]
CHF = 4,
[System.Runtime.Serialization.EnumMember(Value = @"PLN")]
PLN = 5,
[System.Runtime.Serialization.EnumMember(Value = @"CAD")]
CAD = 6,
[System.Runtime.Serialization.EnumMember(Value = @"HUF")]
HUF = 7,
[System.Runtime.Serialization.EnumMember(Value …Run Code Online (Sandbox Code Playgroud)