超文本标记语言下拉列表不会在下拉字段中显示默认/选择的值

本文关键字:默认 显示 选择 字段 下拉列表 超文本标记语言 | 更新日期: 2023-09-27 18:17:49

我有一个包含各种行的表,每一行对应一个ID。对于每一行,我都有EDIT选项,当选择该选项时,应该使用户能够查看' EDIT中对应的ID的默认值。chtml'字段,然后通过擦除默认值并输入新条目并保存它来更新它。

在<<p> strong>编辑。chtml',我有一个"MANAGERS"字段,我需要用名称的下拉列表填充,默认/选择值显示对应于从表中选择编辑操作的行ID。我正在使用viewBag,但我的问题是下拉列表总是显示列表中的第一个项目,而不是选定的值。请看下面的代码
Controller:
 //
        // GET: /ManagersNAMES/Edit/5
        public ActionResult Edit(int id)
        {
            using (var db = new InpEntities())
            {
                var list_managers = (from x in db.TABLE_MANAGERS
                                        select new TABLE_MANAGERSDTO
                                        {
                                            ID = x.ID,
                                            NAME = x.NAME,
                                        }).OrderBy(w => w.NAME).ToList();
                ViewBag.managers = new SelectList(list_managers, "ID", "NAME", id);
                return View();
            }
        }
        public class TABLE_MANAGERSDTO
        {
            public string NAME { get; set; }
            public int ID { get; set; }
        }
        //
        // POST: /ManagersNAMES/Edit/5
        [HttpPost]
        public ActionResult Edit(int id, TABLE_INSTITUTES dp)
        {
            try
            {
                using (var db = new InpEntities())
                {
                    TABLE_INSTITUTES tmp = (TABLE_INSTITUTES)db.TABLE_INSTITUTES.Where(f => f.ID == id).First();
                    tmp.MANAGER = dp.MANAGER;
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
            }
            catch
            {
                return View();
            }
        }

视图:' Edit.chtml

@{
    ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
    <div class="editor-label" style="font-weight:bold">MANAGER</div>
    <div class="editor-field">
        @Html.DropDownList("dp.MANAGER", (SelectList)ViewBag.managers)
    </div>
    <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>

超文本标记语言下拉列表不会在下拉字段中显示默认/选择的值

您需要像这样在控制器中设置选定的id:

var list_managers =  list_managers.Select(x => new
                          {
                              Value = x.ID.ToString(),
                              Text = x.Name
                          })
                          .ToList();
ViewBag.managers = new SelectList(list_managers, "ID", "NAME", id);

并将视图更改为:

@Html.DropDownList("dpMANAGER", (SelectList)ViewBag.managers)

只写@Html.DropDownList("dp.MANAGER", ViewBag.managers)没有selectlist,因为它已经是selectlist的类型了

ViewBag.managers = new SelectList(list_managers, "ID", "NAME");写成