2017-07-29 17 views
0

さらに操作のためにテーブルの結果をコントローラに戻そうとしています。コントローラに戻されると、値はnullとして表示されます。過去には、@ Html.HiddenForを使用して値を返すことができましたが、このインスタンスでは動作していないようです。私がここで間違っていることを確かめない。どんな助けでも大歓迎です。@ Html.HiddenForヌル値を返す

@model IEnumerable<Project.Models.Item> 
@{ 
    ViewBag.Title = "Welcome to The Project"; 
} 


@using (Html.BeginForm("UpdateQuality", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
{ 
    <div class="row"> 
     <div class="form-group"> 
      <table class="table table-bordered"> 
       <tr> 
        <th>@Html.DisplayNameFor(m => m.Name)</th> 
        <th>@Html.DisplayNameFor(m => m.SellIn)</th> 
        <th>@Html.DisplayNameFor(m => m.Quality)</th> 
       </tr> 
       @for (int i = 0; i < Model.Count(); i++) 
       { 
        <tr> 
         <td>@Html.DisplayFor(m => m.ElementAt(i).Name)</td> 
         <td>@Html.DisplayFor(m => m.ElementAt(i).SellIn)</td> 
         <td>@Html.DisplayFor(m => m.ElementAt(i).Quality)</td> 

         @Html.HiddenFor(m => m.ElementAt(i).Name) 
         @Html.HiddenFor(m => m.ElementAt(i).SellIn) 
         @Html.HiddenFor(m => m.ElementAt(i).Quality) 

        </tr> 
       } 
      </table> 
      <div class="form-group"> 
       <div style="margin-top: 50px"> 
        <input type="submit" class="btn btn-primary" value="Advance Day"/> 
       </div> 
      </div> 
     </div> 
    </div> 
} 

ここでnullを返すコントローラがあります。

public ActionResult UpdateQuality(List<Item> Items) 
{ 
    return View("Index", (object)Items); 
} 

答えて

3

あなたは(あなたの生成を属性nameを見て - それはあなたのモデルに一致しない)フォームコントロールを生成HtmlHelper方法でElementAt()を使用することはできません。

いずれIList<T>

@model List<Project.Models.Item> 

こととforループ

@for (int i = 0; i < Model.Count; i++) 
{ 
    .... 
    @Html.HiddenFor(m => m.[i].Name) 
    .... 

又は変更typeof演算ItemのカスタムEditorTemplateを使用を使用するようにモデルを変更し、メインビューで、生成する@Html.EditorFor(m => m)を使用コレクション内の各アイテムの正しいhtml。

+0

うん、それだった。いつものようにスティーブン! – snapper

+0

こんにちはスティーブンこれは今正しく動作しています。私のテーブルデータをコントローラに送信し、そこで簡単な数学が実行され、更新されたデータがビューに返され、テーブルに正しく表示されます。しかし、再度submitをクリックすると、更新されたデータではなく元のテーブルのデータが返されます。何か不足していますか?あなたがより多くの情報を必要とするかどうかを教えてください。 – snapper

+0

カスタムテンプレートを使用している場合は、コレクションを繰り返し処理する方法について少し混乱します.m => mは親オブジェクトをテンプレートに送信するだけです。 @MattThrower。 –