0

編集用のビューに表示するストアド プロシージャを取得しました。ストアド プロシージャの強力な型を作成しました。フィールドを編集して保存ボタンを押すと、パラメータ「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>
}

ここで何が間違っていますか?

4

2 に答える 2

1

次のことを試してください。

次のGetItems_ListResult.cshtmlようにします。

<tr>
 <td>
    @Html.HiddenFor(mdl => mdl.ItemId)
 </td>
  <td>@Model.Name</td>
 <td>
    @Html.EditorFor(mdl => mdl.Description)
 </td>
</tr>

次に、 for ループで次のようにします。

@for (int i = 0; i < Model.ItemList.Count(); i++)
{
   @Html.EditorFor(m => m.ItemsList[i])
}

更新: ISingleResult を使用していることにまったく気づきませんでした。代わりにこれを行うことができます:

//Since it'll have none or one element..
if(Model.ItemList != null  && Model.ItemList.Any())
{
  @Html.EditorFor(m => m.ItemList.First())
}
于 2012-11-29T10:20:52.800 に答える
0

このブログ記事を読みましたか?http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/ Steve は、asp mvc でのリストの編集について説明しています。

このナゲットパッケージを見て読んだらhttp://nuget.org/packages/BeginCollectionItem

于 2012-11-29T10:16:48.047 に答える