0

I am mapping with AutoMapper in .Net 6.

I'm trying to map my ModelView class to View. However, I am getting the following error in the JsonArray property; "the node already has a parent system.text.json"

My First Class;

public class OpticTemplateAddViewModel
{
    [DisplayName("Şablon Adı")]
    public string Name { get; set; }

    [DisplayName("Optik Şablonu")]
    // public JsonArray Template { get; set; }        
    public string Template { get; set; }

    [DisplayName("Not Alanı")]
    public string Note { get; set; }

    [DisplayName("Aktif Mi?")]
    [Required(ErrorMessage = "{0} alanı boş geçilmemelidir.")]
    public bool IsActive { get; set; }
}

My Second Class

public class OpticTemplateAddDto
{
    [DisplayName("Optik Şablonu Adı")]
    [Required(ErrorMessage = "{0} boş geçilmemelidir.")]
    [MaxLength(70, ErrorMessage = "{0} {1} karakterden büyük olmamalıdır.")]
    [MinLength(3, ErrorMessage = "{0} {1} karakterden az olmamalıdır.")]
    public string Name { get; set; }        

    [DisplayName("Optik Şablonu")]
    public JsonArray Template { get; set; }
    // public string Template { get; set; }

    [DisplayName("Optik Şablonu Özel Not Alanı")]
    [MaxLength(500, ErrorMessage = "{0} {1} karakterden büyük olmamalıdır.")]
    [MinLength(3, ErrorMessage = "{0} {1} karakterden az olmamalıdır.")]
    public string Note { get; set; }

    [DisplayName("Aktif Mi?")]
    [Required(ErrorMessage = "{0} boş geçilmemelidir.")]
    public bool IsActive { get; set; }
}

My Mapping Profile;

 CreateMap<OpticTemplateAddViewModel, OpticTemplateAddDto>();

The code I got error in Controller;

var opticTemplateAddDto = Mapper.Map<OpticTemplateAddDto>(opticTemplateAddViewModel);
Travis Illig
  • 23,195
  • 2
  • 62
  • 85
Fırat DİKMEN
  • 479
  • 5
  • 8
  • AutoMapper is not Autofac. AutoMapper does mapping; Autofac does dependency injection. I'll update the question/tags/title accordingly. – Travis Illig Aug 10 '22 at 21:41

1 Answers1

0

I made a temporary solution; Exclude field from JsonArray from mapping as below.

CreateMap<OpticTemplateAddViewModel, OpticTemplateAddDto>().ForMember(x => x.Template, opt => opt.Ignore());

I then manually mapped it myself;

var opticTemplateAddDto = Mapper.Map<OpticTemplateAddDto>(opticTemplateAddViewModel);
var source=opticTemplateAddViewModel.Template;
opticTemplateAddDto.Template = JsonNode.Parse(source)!.AsArray();
Fırat DİKMEN
  • 479
  • 5
  • 8