さまざまな行を持つテーブルがあり、各行は ID に対応しています。すべての行に EDIT オプションがあります。これを選択すると、ユーザーは「Edit.chtml」フィールドでその ID に対応するデフォルト値を確認できるようになり、デフォルト値を消去して新しいエントリを入力して更新することができます。それを保存します。
「Edit.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>