gpt4 book ai didi

asp.net-mvc - ASP.NET MVC SelectList 在创建时不选择值

转载 作者:行者123 更新时间:2023-12-03 08:53:44 27 4
gpt4 key购买 nike

我正在使用 MVC 应用程序,它创建一个下拉列表:

@Html.DropDownListFor(model => model.Title, new SelectList(ViewBag.TitleList, "Value", "Text", Model.Title), "-- Select Title--", new {@class = "form-control"})

相同的代码用于其他下拉菜单,它们按预期工作,但在这种情况下,未选择模型的“标题”值。它确实显示了值,并且在保存时,它会保存正确的值。我还确认模型中“Title”的值在运行时是正确的。

有谁知道为什么这不自动选择当前值?

谢谢。

最佳答案

这提出了另一个问题,即在使用它的其他方法中什么起作用

DropdownListDropdownListFor

这两种方法在使用上其实比较困惑,我会给出基本的例子

使用下面的代码

@Html.DropDownListFor(m => m.SelectedProductId, Model.ProductList, "- Please select -", new {@class="form-control"}) 

Model.ProductList 是一个 SelectList 项,看起来像 SelectList(products, "ID", "Name"),这意味着ID 绑定(bind)到值,而名称绑定(bind)到文本。

下面的代码

@Html.DropDownList("SelectedProductId", Model.ProductList, "- Please select -", new {@class="form-control"}) 

Model.ProductList 也是一个 SelectList 项,看起来像这样 SelectList(products, "ID", "Name") ,它是与第一个几乎相同。

当您想要将值放入下拉选择字段时,上面的两个代码都会起作用。

但是当您想要预先选择一个已选择的值时,两者的方法会发生变化

对于

 @Html.DropDownListFor(m => m.SelectedProductId, Model.ProductList, "- Please select -", new {@class="form-control"}) 

因为它是与模型绑定(bind)的强类型,所以没有必要像 SelectList(products, "ID", "Name", "Selected Value") 中那样包含选定的值,绑定(bind)应该足够了,这可能是您遇到的问题

对于

@Html.DropDownList("SelectedProductId", Model.ProductList, "- Please select -", new {@class="form-control"}) 

由于它不是强绑定(bind)的,因此您需要将所选值包含在 SelecteList 中。

注意

使用 DropdownList 而不在选择列表中包含所选值也可以,但字符串名称必须与模型参数相同文本大小写并不重要例如 m => m.Sex"Sex""sex"

所以我的拙见或意见是使用

@Html.DropDownListFor(model => model.Title, new SelectList(ViewBag.TitleList, "Value", "Text"), "-- Select Title--", new {@class = "form-control"})

关于asp.net-mvc - ASP.NET MVC SelectList 在创建时不选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57221322/

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