1

私はかみそりを使用した MVC プログラミングの初心者であり、コードの何が問題なのかアドバイスが必要です。

私はモデルを持っています

public class OrderDetails : OrderList
{
      public string CompanyId { get; set; }
      public List<OrderItems> OrdItems { get; set; }
}
public class OrderItems
{
      public int Id { get; set; }
      public string StopAddressName { get; set; }
}

データを入力するコントローラーがあります。

public ActionResult Edit()
{
      OrderDetails ordDtl = new OrderDetails();

      ordDtl.CompanyId = "1";
      ordDtl.OrdItems = new List<OrderItems>();
      for (int i = 1; i < 4; i++)
      {
          OrderItems tmp = new OrderItems();
          tmp.Id = i;
          tmp.StopAddressName = "Street " + i;
          ordDtl.OrdItems.Add(tmp);
      }

      return View("EditOrder", ordDtl);
}

表示するために送信すると、すべてのデータが表示されます。これが私の見解です。

@model OrderDetails
@using (Html.BeginForm("Edit", "Orderlayouts", FormMethod.Post))
{
   <fieldset><legend>OrderDetail</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.CompanyId)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.CompanyId)
        </div>

        <table>
          <tr>
             <td>id</td>
             <td>Address</td>
          </tr>
          @foreach (var itm in Model.OrdItems)
          {
          <tr>
             <td>@itm.Id</td>
             <td>@itm.StopAddressName</td>
          </tr>
          }
          </table> 

<p>
    <input type="submit" value="Edit" />
</p>
    </fieldset>
}

コントローラーの CompanyID にある送信ボタンをクリックすると、OrdItems の値が null になります。私のコードで何が問題なのか指摘できますか。これが私のコントローラーです。

[HttpPost]
public ActionResult Edit(OrderDetails Orderdt)
{
    return View("EditOrder", Orderdt);
}

どんな提案でも大歓迎です。

4

3 に答える 3

2

私はこのようなことをやってみます。

@for (int i = 0; i < Model.OrdItems.Count; i++)
{

@Html.DisplayFor(model => model.OrdItems[i].Id)@Html.HiddenFor(model => model.OrdItems[i].Id)
@Html.DisplayFor(model => model.OrdItems[i].StopAddressName)@Html.HiddenFor(model => model.OrdItems[i].StopAddressName)

}
于 2013-10-02T19:55:22.257 に答える