ASP. net основной почтовый массив Web API как свойство - PullRequest
0 голосов
/ 24 марта 2020

Я использую массив для хранения тегов вопроса, но когда я отправляю данные из Chrome, я не получаю никаких данных в массиве TagId. Другие свойства в порядке, и я получаю их только TagId null Вот мой код:

Question.cs

public partial class Question 
{

    [Key]
    public int Id { get; set; }

    ...

    [Display(Name = "Tags")]
    [NotMapped]
    public int[] TagId
    {
      get
      {
          Some Code Here
      }

      set
      {
        Tag = "";
        if(value==null)
          return;
        foreach (var i in value)
        {
          Tag = i + ",";
        }

        Tag = Tag.Trim(',');
      }
    }

    [ScaffoldColumn(false)]
    public string Tag { get; set; }
    ...
}

Вот chrome сообщение с фиктивные данные Chrome данные поста и я получаю ноль в asp. net данные поста: Visual Studio Trace on Data получает

вот мой контроллер почтовый индекс:

QuestionsController.cs

[Route("adminapi/[controller]")]
[ApiController]
public class QuestionsController : BaseRControllerWithFile<Question,QuestionAdminRepository>
{
...
  public override async Task<ActionResult<Question>> Post(Question entity)
  {
    return await base.Post(entity);
  }
...
}

1 Ответ

0 голосов
/ 24 марта 2020

Измените класс Question на этот:

public class Question
{
    private int[] tagId;

    private string tag;

    [Key]
    public int Id { get; set; }

    [Display(Name = "Tags")]
    [NotMapped]
    public int[] TagId
    {
        get => tagId;
        set
        {
            tagId = value;

            tag = "";
            if (value == null)
                return;
            foreach (var i in tagId)
            {
                tag += i + ",";
            }

            tag = tag.Trim(',');
        }
    }

    [ScaffoldColumn(false)]
    public string Tag => tag;
}

Или, как сказал @Paul; Вы можете использовать Регистрация:

tag = value != null ? string.Join(',', tagId) : null;
...