おはようございます、モデルで TryValidateModel を使用して、特定の必須フィールドが満たされていることを確認しています。ドキュメントによると、有効な場合は true を返し、そうでない場合は false を返します。
無効なモデルで false を返すのではなく、.net コア API でこれを使用すると、例外が発生し、独自の JSON が返され、それ以上のコード実行が停止するようです。
独自のエラーをスローするのではなく、単に false を返すようにして、独自の JSON を返す方法はありますか。
検証が失敗すると、ブレークポイントを使用できず、次の JSON が返されます。
{
"errors": {"RepairOrder.ReferenceNumber": ["The ReferenceNumber field is required."]},
"type": null,
"title": "One or more validation errors occurred.",
"status": 400,
"detail": null,
"instance": null,
"extensions": {"traceId": "|514b9bb2-4999b11a49fa3351."}
}
編集:以下の要求されたコードとして
using System.ComponentModel.DataAnnotations;
namespace Bright.Models
{
public class CreateRepairOrderRequest
{
public RepairOrder RepairOrder { get; set; }
}
public class RepairOrder
{
[Required]
public string ReferenceNumber { get; set; }
}
}
using Bright.Models;
using Microsoft.AspNetCore.Mvc;
namespace Bright.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class CreateRepairOrderController : ControllerBase
{
[HttpPost]
public CreateRepairOrderResponse Post(CreateRepairOrderRequest createRequest)
{
if(!TryValidateModel(createRequest))
return new CreateRepairOrderResponse() { AckMessage = "Creation Failed: Missing required field", RetCode = "1" }; //This line is never executed when TryValidateModel fails
}
}