2011-09-15 11 views
0

初心者からプロへのちょっとした簡単な質問。リストの送信<T>のアイテム

私はアプリケーションで編集可能なグリッドタイプのフォームを実装しようとしています。ここに例があります。私は、ユーザーが最後の2つのフィールド(nett_prcと数量を編集できるようにしたいので

@for (int i = 0; i < Model.Items.Count; i++) 
    { 
     <tr> 
      <td>@Html.CheckBoxFor(m => m.Items[i].fav_ind) 
      </td> 
      <td> 
       <a href="#" onclick="ShowDeals(@Model.Items[i].item_no);event.returnValue = false; return false;"> 
        DEALS</a> 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].item_no) 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].item_desc) 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].mfr_item) 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].pack_size) 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].purc_uom) 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].purc_uom_conv) 
      </td> 
      <td>@Html.DisplayFor(m => m.Items[i].list_prc) 
      </td> 
      <td> 
       @Html.TextBoxFor(m => m.Items[i].nett_prc) 
      </td> 
      <td> 
       @Html.TextBoxFor(m => m.Items[i].Qty) 
      </td> 
     </tr> 
    } 

これ@Forは、Html.BeginFormの内側にある。(このグリッドの下部に下を提出し、テーブルもあります)

私が提出するとき、私はすべての行をコントローラに戻しますが、項目にはHtml.TextBoxFor()の2つのフィールドのみが入っています。私は@ Html.HiddenFor()を使用することができますが、私はラベルに他のフィールドを表示することができますし、ユーザが提出するときに私は値のお尻がうまくいきたいと思っています。

Th事前にanks。

答えて

0

あなたは同時にDisplayForHiddenForの両方を行うことができます。

<td> 
    @Html.DisplayFor(m => m.Items[i].item_no) 
    @Html.HiddenFor(m => m.Items[i].item_no) 
</td> 

しかし、なぜあなたはHiddenForが必要でしょうか?ユーザーが一部の値を編集することになっていない場合は、フォームの値を信頼できません。そして、あなたがそれらを信用できないならば、元の(例えば、データベースから)読まなければなりません。 HiddenForは何をここに購入しますか?

+0

私たちはAppServerからデータを取得していますが、これはかなり遅いです。ですからAppServerを呼び出すことなく、できるだけ多くのことをしたいと思います。より良い方法が必要であるように見えますが、モデルのPropertyに属性を追加することはできません。それは情報を保持しますか? – CaptainOrgange

+0

@CaptainOrgrange:一度読んだら、それらを 'Session'に入れてください。あなたがそれを提案する方法では、ユーザーはHTTP要求を作成することによってフォームの*すべての*フィールドを編集することができます。 – Jon

+0

私は結果をキャッシュするように見えます。私が使うことができる他の注釈を知っていますか? – CaptainOrgange

関連する問題