gpt4 book ai didi

asp.net-mvc - Html.DropdownListFor 未设置选定值

转载 作者:行者123 更新时间:2023-12-02 08:56:14 26 4
gpt4 key购买 nike

如何设置 Html.DropDownListFor 的选定值?我在网上查了一下,发现可以通过使用第四个参数来实现,如下所示:

@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0),  "Please select a country")

我的选择列表显示如下:

<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>

但由于某种原因,英国仍被选中,但我希望选择“请选择一个国家/地区”。

有人知道我怎样才能实现这个目标吗?

编辑

我已经更新了我的代码,因为功能略有变化,但似乎仍然遇到这个问题。我的看法是这样的:

@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")

1 是我想要选择的 option 的 ID,我也尝试过使用 option 的文本,但这也确实不工作。

有什么想法吗?

最佳答案

您的代码存在一些概念问题:

首先

@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")

使用 DropDownListFor 时,第一个参数是提交表单后存储所选值的属性。因此,在您的情况下,您应该将 SelectedOrderId 作为模型或类似内容的一部分,以便以这种方式使用它:

@Html.DropDownListFor(n => n.SelectedOrderId, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")

第二

除了使用 ViewBag 之外,这并没有错,但还有更好的方法(将该信息放入 ViewModel 中),当您的 ViewBag 属性时存在“小错误”(或未检测到的行为) ,您保存 SelectList 的位置,与您放置选定值的属性的名称相同。为了避免这种情况,只需在命名保存项目列表的属性时使用另一个名称即可。

如果我是您,我会使用一些代码来避免此问题并编写更好的 MVC 代码:

View 模型:

public class MyViewModel{
public int SelectedOrderId {get; set;}
public SelectList OrderTemplates {get; set;}

// Other properties you need in your view
}

Controller :

public ActionResult MyAction(){
var model = new MyViewModel();
model.OrderTemplates = new SelectList(db.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1);
//Other initialization code

return View(model);
}

在您看来:

@Html.DropDownListFor(n => n.SelectedOrderId, Model.OrderTemplates, "Please select an order template")

关于asp.net-mvc - Html.DropdownListFor 未设置选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476530/

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