I've just upgraded my backend API to ASP.NET Core with .NET 6 and started getting errors if a POST call contains an empty subsclass.
Here's an example. My API receives POST calls for comment entries and the class that handles these calls looks like this:
public class CommentEntry
{
   [Required]
   public string Comments { get; set; }
   public DateTime EntryDate { get; set; }
   public File Attachment { get; set; }
}
As you can see, this class has a File subclass for attachments. The File class looks like this:
public class File
{
   public Guid Id { get; set; }
   public string Name { get; set; }
   public string Url { get; set; }
}
When my API was running ASP.NET Core with .NET 5, I could send a POST request like the one below which sent an empty object for attachment property and it would work fine:
{
   "comments": "Hello World!",
   "entryDate: "2021-11-13T14:52",
   "attachment": {}
}
Now, my controller action method is rejecting this because of !ModelState.IsValid line.
If I change the POST request to the following, it then works in .NET 6 as well.
{
   "comments": "Hello World!",
   "entryDate: "2021-11-13T14:52",
   "attachment: {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "",
      "url": ""
   }
}
As you can see in CommentEntry class, an attachment is not required.
What's the correct way to handle this scenario where I have no data for the subclass? Should I not be sending an empty object in my POST call?
 
    