Проверка в классе коллекции не работает

У меня есть следующая модель:

public partial class EmployeeInfo
{
    public int EmployeeInfoId { get; set; }
   [Required]
    [DisplayName("Last Name")]
    public string LastName { get; set; } =null!;
    public virtual ICollection<EmergencyInfo> EmergencyInfos { get; } = new List<EmergencyInfo>();
}

У меня есть еще один класс модели для EmergencyInfo

public partial class EmergencyInfo
{
    public int EmergencyInfoId { get; set; }

    public int EmployeeInfoId { get; set; }
   [DisplayName("First Name")]
    [Required]
    public string? FirstName { get; set; } = null!;
 public virtual EmployeeInfo? EmployeeInfo { get; set; } 
}

Хотя имя требуется в модели EmergencyInfo. Когда я нажимаю кнопку отправки, не отображается, что требуется имя. Это показывает, что LastName является обязательным, поскольку это поле существует в модели EmployeeInfo. ниже моя страница бритвы:

@model AckPackage.Models.EmployeeInfo
@{
    ViewData["Title"] = "Create";
}

 <div class = "form-group row">
                <div class = "col-sm-4">
                    <label asp-for = "LastName" class = "control-label"></label>
                    <input asp-for = "LastName" class = "form-control input-lg" />
                    <span asp-validation-for = "LastName" class = "text-danger"></span>
                </div>

        <div class = "col">
                                <label asp-for = "@Model.EmergencyInfos.ToList()[i].FirstName" class = "control-label"></label>
                                <input name = "EmergencyInfos[@i].FirstName" value = "@(string.IsNullOrEmpty(Model.EmergencyInfos.ToList()[0].FirstName)? "": @Model.EmergencyInfos.ToList()[0].FirstName)" class = "form-control" />
                     

   <span asp-validation-for = "@Model.EmergencyInfos.ToList()[0].FirstName" class = "text-danger"></span>
                        </div>
@section Scripts {
    @{
        await Html.RenderPartialAsync("_ValidationScriptsPartial");
    }

Незаполненная фамилия всегда показывает, что требуется фамилия, но имя из EmergencyInfo всегда переходит в HTTPPost без отображения сообщения об ошибке проверки.

Если я удалю tolist(), как предложено в комментарии ниже, я получу эту ошибку компиляции:

Похоже, что вы обращаетесь только к первому элементу в списке EmergencyInfos на странице Razor, но вам следует проверять все элементы в списке на предмет проверки.

Vadim Martynov 12.02.2023 21:47

Да, я. Я не хотел публиковать всю страницу Razor. Я просто хотел показать проблему, которая у меня возникла

Anjali 12.02.2023 22:20

Удалите ToList, я никогда не видел ничего подобного. Просто исправьте свою модель и используйте Model.EmergencyInfos[i].FirstName

Serge 12.02.2023 23:12

Я удалил toList() и вставил ошибку в свой исходный пост.

Anjali 13.02.2023 03:04
Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
БЭМ: Конвенция об именовании CSS
БЭМ: Конвенция об именовании CSS
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Конфигурация Jest в angular
Конфигурация Jest в angular
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.
0
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Убедитесь, что asp-for тег помощник для input, как показано ниже:

<div class = "col">
    <label asp-for = "@Model.EmergencyInfos.ToList()[0].FirstName" class = "control-label"></label>
    <input asp-for = "EmergencyInfos.ToList()[@i].FirstName" name = "EmergencyInfos[@i].FirstName"value = "@(string.IsNullOrEmpty(Model.EmergencyInfos.ToList()[0].FirstName)? "": @Model.EmergencyInfos.ToList()[0].FirstName)" class = "form-control" />
    <span asp-validation-for = "@Model.EmergencyInfos.ToList()[0].FirstName" class = "text-danger"></span>
</div>

Другие вопросы по теме