2009-08-12 20 views
4

MVCでWebFormsで難しくないことを行う正しい方法を理解するのに苦労しています。誰かが私を指揮することを期待しています正しい方向。ASP.NET MVCで表の行を選択する方法

基本的には、私はデータテーブルを表示しており、ユーザーは0行以上の行を選択できる必要があります。彼らが提出を押すと、画面上の他のデータに影響するので、私のコントローラはどの行が選択されたのかを知りたい。

私のビューは次のようになります。

<form action="/Summary/Index" method="post"> 
    <table> 
     <thead> 
      <tr> 
       <th></th> 
       <th>Name</th> 
       <th>Age</th> 
      </tr> 
     </thead> 
     <tbody> 
      <% foreach (Person p in Model) 
       { %> 
      <tr> 
       <td> 
        <input type="checkbox" name="" /> <!-- HOW SHOULD THIS BE RENDERED? --> 
       </td> 
       <td><%= p.Name %></td> 
       <td><%= p.Age %></td> 
      </tr> 
      <% } %> 
     </tbody> 
    </table> 

    <input type="submit" value="Update" /> 

</form> 

送信ボタンがクリックされたときに、フォームが現在のURLに掲載します。モデル 'Person'はViewModelであるため、必要に応じて必要なUI関連プロパティを追加できます。 Personに 'Selected'プロパティを追加し、私のコントローラにPersonのリスト/配列を取得させ、それぞれの選択されたプロパティをチェックさせる必要がありますか?

私はJavaScriptなしで動作するソリューションが必要であり、コントローラーにチェックボックスの値の取得方法が気になることはありません。必要に応じて、カスタムModelBinderを作成してください。

誰も私にこのことをどうやっていいか考えてもらえますか?

ありがとうございました。 Simon。

答えて

11

者のIDや他のいくつかのユニークな識別子は、次にようにそれを構造化がある場合:

 <% foreach (Person p in Model) 
      { %> 
     <tr> 
      <td> 
       <input type="checkbox" name="selectedNames" value="<%= p.ID %>" /> <!-- HOW SHOULD THIS BE RENDERED? --> 
      </td> 
      <td><%= p.Name %></td> 
      <td><%= p.Age %></td> 
     </tr> 
     <% } %> 

あなたは、あなたのコントローラメソッド「列[] selectedNames」への復帰を追加することができるように、すなわち

public void ProcessReturn(string[] selectedNames) 
{ 
    foreach (string nameID in selectedNames) 
    { 
    ProcessNameByID(nameID); 
    } 
} 

アレイには、チェックされた各チェックボックスの「値」と、チェックされたものだけが含まれます!

+0

ありがとう、私が欲しかったのと同じように動作するLazarus! – Simon

関連する問題