超文本标记语言下拉列表不会在下拉字段中显示默认/选择的值
本文关键字:默认 显示 选择 字段 下拉列表 超文本标记语言 | 更新日期: 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");
写成