gpt4 book ai didi

asp.net-mvc - 当我没有设置值时,Razor DropDownListFor 设置选定的值

转载 作者:行者123 更新时间:2023-12-05 03:14:05 24 4
gpt4 key购买 nike

我有三个DropDownListFor在我看来是 helper 。他们三个都使用相同的 List<SelectListItem>作为他们的“选项”参数。第一和第三DropDownListFor包含来 self 的模型和第二个 DropDownListFor 的整数值有一个 null来 self 的模型的值(value)。自然地,我希望第二个下拉列表没有选择任何选项并返回到其默认的“请选择”选项。但这不会发生。每次我发送null第二个下拉菜单的值,它被设置为与它之前的那个(第一个)相同的选择选项。

这是我的简化代码:

<div class="form-group">
@Html.LabelFor(m => m.FirstId)
<div class="col-md-10">
@Html.DropDownListFor(m => m.FirstId, Model.SelectOptions, "Please select")
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.SecondId)
<div class="col-md-10">
@Html.DropDownListFor(m => m.SecondId, Model.SelectOptions, "Please select")
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ThirdId)
<div class="col-md-10">
@Html.DropDownListFor(m => m.ThirdId, Model.SelectOptions, "Please select")
</div>
</div>

唯一的区别在于 Id s 是第 1 和第 3 是 int第二个是可以为 null 的 int .知道为什么会这样吗?

编辑:

这是我构建 SelectOptions 的方式:

model.SelectOptions.AddRange(db.SelectOptions.ToList().Select(option => new SelectListItem { Text = option.Name, Value = option.Id.ToString() }));

最佳答案

由于您的 View 代码通过三个下拉菜单共享 Model.SelectOptions 对象,因此列表中每个 SelectListItem 对象的 Selected 属性可能是干扰。

在您的示例中,当构造第一个下拉列表时,其值与 Model.FirstId 值匹配的 SelectListItem 对象之一将被设置为 true。在创建第二个下拉列表时,由于 Model.SecondId 为空,Model.SelectOptions 列表中不存在,因此带有 Selected=True 的 SelectListItem 将继续被选中。然后是第三个下拉列表,由于 Model.ThirdId 具有列表中存在的值,因此 SelectListItemSelected 属性的值将再次变为true 并选中。

为了解决这个问题,我会将新的 SelectList 对象传递给每个 DropDown:

@Html.FropDownListFor(m => m.FirstId, new SelectList(Model.SelectOptions, "Value", "Text"), "Please Select")
@Html.FropDownListFor(m => m.SecondId, new SelectList(Model.SelectOptions, "Value", "Text"), "Please Select")
@Html.FropDownListFor(m => m.ThirdId, new SelectList(Model.SelectOptions, "Value", "Text"), "Please Select")

假设 Model.SelectOptions 中的 SelectListItem.Selected 均未设置为 true。

关于asp.net-mvc - 当我没有设置值时,Razor DropDownListFor 设置选定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27069247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com