在 ASP.NET Core 中使用枚举发送 Json post 请求时出现问题

Issue when sending Json post request with Enums in ASP.NET Core

我正在研究 ASP.NET Core 6.0 项目。我试图通过 post 人发送 post 请求。但是当我的模型具有枚举数据类型时,它将控制器作为空值命中。

我有一个字符串枚举

public enum TransactionType
{
    [StringValue("Payment")]
    Payment,

    [StringValue("Deferred")]
    Deferred,

    [StringValue("Refund")]
    Refund,

    [StringValue("Repeat")]
    Repeat,
}

这是我的要求

{
  "transactionType": "Payment",  
   "amount": 1000
}

这是我的控制器

public async Task<IActionResult> Payment([FromBody] PaymentRequest paymentRequest)
{
    var result = await _opayoPaymentService.PaymentTranscation(paymentRequest);
        
    return Ok(result);
}

这是我的模型class:

public class PaymentRequest
{
     public TransactionType TransactionType { get; set; }  // If I comment this The request is hitting fine otherwise It hit as null value,
     public int Amount { get; set; }
}

我想我的枚举是错误的。谁能帮我找出问题所在?

您控制器中的映射不会在 StringValue 元上进行,而是在 enumint 类型上进行。在您的情况下,Payment 为 0,Deferred 为 1,依此类推。如果您不想让框架自动为您完成,您可以为它们分配不同的值。所以而不是

{ "transactionType": "Payment",
"amount": 1000 }

使用

{ "transactionType": 0,
"amount": 1000 }