【发布时间】:2022-05-08 03:05:27
【问题描述】:
我在我的 Web API 项目中遇到了一段代码,它有一个这样结构的类:
public class QuestionDto
{
public bool disabled {get;set;}
public int id {get;set;}
public int order {get;set;}
public PositionDto pagePosition {get;set;}
public string title {get;set;}
}
public enum PositionDto
{
FullWidth = 0,
Half = 1
}
有一个 API 调用返回 QuestionDto,大致如下:
[Route("")]
[HttpGet]
[ResponseType(typeof(QuestionDto))]
public async Task<IHttpActionResult> GetCategoryQuestions()
{
return Ok(new QuestionDto { PagePosition = PagePositionDto.Half });
}
这是来自 Chrome 控制台网络选项卡的片段,显示了此 API 调用的响应:
枚举如何返回它的文本值,而不是它的 int 值?
为了进一步混淆这一点,如果我随后采用相同的类结构并复制并粘贴到不同的项目,返回此对象的 api 调用将返回 int 值 - 这是我所期望的。
那么第一个项目可以返回字符串值吗?
是否有一些设置可以使这个枚举返回它的字符串值?
【问题讨论】:
-
如何序列化枚举?
-
应该是
new QuestionDto {pagePosition = PositionDto.Half};? -
我猜(如果没有 a lot more info 这将是一个猜测)您已经在代码中的某处定义了一个自定义序列化程序(可能在
Startup.cs但是这可能会有所不同) -
@Liam 这是正确的答案 - 如果您将其添加为答案,我会将其标记为正确
-
尝试在项目中搜索类似的东西 - StringEnumConverter。如果它被添加到全局 api 配置中,那么这就是它返回字符串的原因。
标签: c# asp.net-web-api enums