繁体   English   中英

ASP.NET Core 2 MVC选择标记帮助器(下拉列表)所选项目并非总是反映值

[英]ASP.NET Core 2 MVC Select Tag Helper (drop-down) Selected Item Not Always Reflecting Value

我正在处理一种在我的应用程序中操纵用户/员工数据的表格。

我有一个简单的下拉选择标签帮助程序(后跟一个标签以输出当前值)来更改员工的区域销售经理分配:

<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 ;如果不需要区域销售经理分配,则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));
}

刷新视图后,选择标签帮助器中的逻辑disabled="@(Model.EmployeeRole == 1 ? null : "disabled")启动并适当禁用菜单,并且标签显示该值确实已成功归零;但是,当我期望它将显示项目“选择...”时,菜单仍显示最后一个选择,因为该项目对应于零值:

意外的下拉菜单

最后再回发一次(通过将角色更改为不需要区域销售经理分配的时间),最终会将菜单项设置为“选择...”。

我在这里想念什么? 第一次回发后,将以预期值返回视图模型; 为什么菜单选择没有更新?

我想到了。 提交表单后,select标签助手的发布值“覆盖”(读为“设置”)模型上的值。 您无法在POST控制器中更新模型值,并且不能期望select标签助手使用新值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM