Значение CheckBox не опубликовано в модели - PullRequest
0 голосов
/ 28 мая 2019

У меня есть страница, которая содержит матрицу, где пользователь связан с различными навыками. Это отображается как страница, содержащая флажки. Я хотел бы сохранить только те строки, которые действительно изменились. Для этого я добавил свойство «IsChanged», которое устанавливается в «true», когда пользователь изменяет значение для флажка.

У меня есть следующий код:

@for (var i = 0; i < Model.EmployeeList.Count; i++)
{
    <input type="hidden" asp-for="EmployeeList[i].Id" />
    <input type="checkbox" asp-for="EmployeeList[i].IsChanged" name="IsChanged" id="IsChanged_@Model.EmployeeList[i].Id" />

    <tr>
        <th scope="row">@Model.EmployeeList[i].Name @Model.EmployeeList[i].Surname</th>
        <th scope="row">
            @Model.EmployeeList[i].Location
        </th>
    @for (var j = 0; j < Model.EmployeeList[i].SelectedSkillList.Count; j++)
    {
        <td>                
            <label class="label">
                <input asp-for="EmployeeList[i].SelectedSkillList[j].IsSelected" data-changedHidden="IsChanged_@Model.EmployeeList[i].Id" type="checkbox" class="label__checkbox" />
                <span class="label__text">
                    <span class="label__check">
                        <i class="fa fa-check icon"></i>
                    </span>
                </span>
            </label>

            @Html.HiddenFor(x => Model.EmployeeList[i].SelectedSkillList[j].Prefix)
        </td>
    }
    </tr>
}

Когда я проверяю один из других флажков с @for, флажок EmployeeList [i] .IsChanged для данной строки проверяется. Это прекрасно работает, и я вижу, что это происходит на моей странице.

Однако, когда я сохраняю сообщение, значение для флажка IsChanged не включается в сообщение. Это всегда остается ложным.

Где я допустил ошибку? Кто-нибудь может мне помочь?

<input type="checkbox" name="IsChanged" id="IsChanged_1" data-val="true" data-val-required="The IsChanged field is required." value="true">
<input name="EmployeeList[0].IsChanged" type="hidden" value="false">

Это модель:

        public List<Core.Employee> EmployeeList { get; set; }

    public IEnumerable<MachineTypeSpecs> MachineTypeList { get; set; }

    public CompetenceMatrixModel(IEmployeeData employeeData, IMachineTypeSpecs machineTypeSpecs)
    {
        this._employeeData = employeeData;
        this._machineTypeSpecs = machineTypeSpecs;
    }

Core.Employee содержит свойство IsChanged.

1 Ответ

0 голосов
/ 28 мая 2019

ОК, тупой, удаление имени исправило проблему. Благодаря @Craig H

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...