Ошибка при валидации на атрибутах в блоке If

Рейтинг: 0Ответов: 1Опубликовано: 16.04.2023

при попытке валидации с CreatePhoneViewModel приходят обьект Phone и list brands я наполняю viewmodel.brand данными с базы но при этом валидация все равно ругает что поле обязательное к заполнения я не могу понять никаких атрибутов Required на этом листе нету

 public IActionResult Create(CreatePhoneViewModel viewModel)
        {
            viewModel.Brands = _brandSerive.GetAll()
                .Select(
                    brand => new BrandPageViewModel(){
                        Id = brand.Id,
                        Name = brand.Name,
                        Email = brand.Email,
                        DateTime = brand.DateTime 
                    }).ToList();
            if (!ModelState.IsValid) **не проходит If**
            {
                return View(viewModel);
            }
            _phoneService.Create(viewModel);
            return RedirectToAction("Index");
        }

введите сюда описание изображения

введите сюда описание изображения введите сюда описание изображения

это моя вью модель брендов

   using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication5.ViewModel;

    public class CreateBrandPageViewModel
    {
        public Guid Id { get; set; }
        [Required(ErrorMessage = "Поле обязательно для заполнения")]
        [StringLength(50, MinimumLength = 3, ErrorMessage = "Минимальное количество щзнаков: 3, Максимальное - 50")]
        [DataType(DataType.Text, ErrorMessage = "тут должен быть только текст")]
        public string Name { get; set; }
        [Required(ErrorMessage = "Поле обязательно для заполнения")]
        [StringLength(50, MinimumLength = 3, ErrorMessage = "Минимальное количество знаков: 3, Максимальное - 50")]
        [DataType(DataType.EmailAddress, ErrorMessage = "тут должен быть только Email")]
        public string Email { get; set; }
        
        [Required(ErrorMessage = "Поле обязательно для заполнения")]
        [Range(typeof(DateTime), "15/04/1923", "15/04/2123", ErrorMessage = "Дата должна быть между 15/04/1923 и 15/04/2123")]
        [DataType(DataType.DateTime, ErrorMessage = "тут должен быть только Дата")]
        public DateTime? DateTime { get; set; }
    }

моя вью модель создания телефонов

public class CreatePhoneViewModel
{
    public PhoneViewModel Phone { get; set; }
    public List<BrandPageViewModel> Brands { get; set; }
}

моя вью модель телефонов

using WebApplication5.Models;

namespace WebApplication5.ViewModel;

public class PhoneViewModel
{
    public Guid Id { get; set; }
    
    public string Name { get; set; }
    
    public string OperatingSystem { get; set; }
    
    public decimal? Price { get; set; }
    
    public decimal? BuiltInMemory { get; set; }
    
    public Brand Brand { get; set; }
    
    public Guid BrandId { get; set; }
    
    public DateTime CreateAt { get; set; }
    
    public DateTime UpdateAt { get; set; }

}

Ответы

▲ 0

Решил проблему добавив Nulltype листу и убрав наполнение