ASP.NET Core 2 MVC Select Tag Helper (раскрывающийся список) Выбранный элемент не всегда отражает значение - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над формой для манипулирования данными пользователя / сотрудника в моем приложении.

У меня есть простой раскрывающийся помощник выбора тега (за которым следует метка для вывода текущего значения), чтобы изменитьРегиональный менеджер по продажам сотрудника:

<select asp-for="Employee.RegionalSalesManager" asp-items="Model.RegionalSalesManagers" disabled="@(Model.EmployeeRole == 1 ? null : "disabled")">
    <option value="0">Select...</option>
</select>
<label id="lblRegionalSalesManagerID">@((Model.Employee != null) ? Model.Employee.RegionalSalesManager.ToString() : @"")</label>

Это прекрасно работает при первоначальной загрузке Model.Empolyee из базы данных;в представлении тег выбора (раскрывающееся меню) показывает правильный элемент (Региональный менеджер по продажам), и соответствующее значение выводится в метке:

Хорошее раскрывающееся меню

Другая часть формы позволяет изменить роль сотрудника - в зависимости от роли назначение регионального менеджера по продажам может не понадобиться.При изменении роли сотрудника форма публикуется, а если назначение Регионального менеджера по продажам не требуется, значение Model.Employee.RegionalSalesManger обнуляется:

[HttpPost, ValidateAntiForgeryToken]
public async Task<IActionResult> Index(UserManagementViewModel model)
{
    if (model.Employee != null)
    {
        switch (model.EmployeeRole)
        {
            case 2: // employee Role is Regional Sales Manager
                model.Employee.RegionalSalesManager = 0; // no need for assignment
                break;
        }
    }
    return View(await BuildModel(model));
}

При обновлении представления логика в помощнике тега select disabled="@(Model.EmployeeRole == 1 ? null : "disabled") запускает и отключает меню соответствующим образом, а метка показывает, что значение действительно было успешно обнулено;однако меню по-прежнему показывает последний выбор, когда я ожидаю, что в нем будет отображаться элемент «Выбор ...», поскольку этот элемент соответствует нулевому значению:

Неожиданное раскрывающееся меню

Повторная отправка еще раз (путем изменения роли на другую, для которой не требуется назначение регионального менеджера по продажам) приводит к тому, что элемент меню устанавливается на «Выбрать ...»

Чего мне здесь не хватает?Модель представления возвращается с ожидаемым значением после первого постбека;почему выбор меню не обновляется?

1 Ответ

0 голосов
/ 12 июля 2019

Я понял это. Отправленное значение для помощника тега select при отправке формы «переопределяет» (читается «устанавливает») значение в модели. Вы не можете обновить значение модели в контроллере POST и ожидать, что помощник по тегу select будет использовать новое значение.

...