編集用のビューに表示するストアド プロシージャを取得しました。ストアド プロシージャの強力な型を作成しました。フィールドを編集して保存ボタンを押すと、パラメータ「cm」が常に空になります。また、リストではなく、1 つのレコードのみを表示しています。
カスタムモデル:
public class CustomModel
{
public string Description { get; set; }
public System.Data.Linq.ISingleResult<GetItems_ListResult> ItemList { get; set;}
}
コントローラーのこの部分は、それをビューに送信します。
public ActionResult Details(int id)
{
var row = dataContext.Items.FirstOrDefault(x => x.ItemID == id);
var cm = new CustomModel();
cm.ItemList = dataContext.GetItem_List(row);
cm.Description = row.Description;
return View(cm);
}
このコントローラーは、ビューからデータを受け取ります。
[HttpPost]
public ActionResult UpdateItems(CustomModel cm)
{
return RedirectToAction("Index");
}
これはビューです:
@model TestWeb.Models.CustomModel
@using (Html.BeginForm("UpdateItems", "Item", FormMethod.Post))
{
<table>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
@foreach (var p in Model.ItemList.ToList())
{
<tr>
<td>
@Html.HiddenFor(mdl => p.ItemId)
</td>
<td>@p.Name</td>
<td>
@Html.EditorFor(mdl => p.Description)
</td>
</tr>
}
</table>
<p>
<input type="submit" value="save" />
</p>
}
ここで何が間違っていますか?