Как отправить обратно выбранные флажки в контроллер - PullRequest
1 голос
/ 03 апреля 2010

У меня следующий вид

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
   <h2>Tables <%=ViewData["RetriverName"] %></h2>
   <%using (Html.BeginForm("ResfreshSelectedTables", "Home"))
     { // begin form%>
   <table id="MyTable">
      <thread>
      <tr>
      <th style="width: 150px; text-align:center"><input type="checkbox" id="SelectAll" />Select All..</th>
      </tr>
         <tr>
            <th style="width:20px; text-align:right">ID</th>
            <th style="width:40px">Base Table</th>
            <th style="width:50px">Table</th>
            <th style="width:280px">Description</th>
         </tr>           
     </thread>
      <tbody>
         <%  int i = 0;
             foreach (var item in Model)
             { %>
         <tr id="row<%= i.ToString() %>">
            <td align="center" style="padding: 0 0 0 0"> 
                            <%= Html.CheckBox("selections[" + i.ToString() + "].IsSelected", item.IsSelected)%> 
                            <%= Html.Hidden("selections[" + i.ToString() + "].ID", item.id)%> 
                           <%= Html.Hidden("selections[" + i.ToString() + "].BaseTable", item.baseTable)%> 
                            <%= Html.Hidden("selections[" + i.ToString() + "].Name", item.NAME)%> 
                        </td> 

            <td style="text-align:right"><%=Html.Encode(item.id)%></td>
            <td><%= Html.Encode(item.baseTable)%></td>
            <td><%=Html.Encode(item.NAME)%></td>
            <td><%=Html.Encode(item.Description) %></td>
         </tr>
         <% i++;
             } %>
      </tbody>
   </table>
   <p>
   <input type="submit" value="saving"  />
   </p>
   <% }//end form %>
   <script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

    <script type="text/javascript">
       // Select All Checkboxes
       $(document).ready(function() {
          $('#SelectAll').click(function() {

             var newValue = this.checked;
             $('input:checkbox').not('input:hidden').each(function() {
               // alert(this.id+newValue );
                this.checked = newValue;
             });
          });
       }); 
    </script> 

</asp:Content>

Как перенести выбранные флажки на контроллер?

1 Ответ

1 голос
/ 03 апреля 2010

Попробуйте добавить скрытое поле для индекса выбранного элемента, как показано в одном из сообщений blog Фила Хаака. Затем вы получите коллекцию в виде списка такого типа на контроллере. Это обеспечит получение коллекцией элементов с установленными и не отмеченными флажками в правильном порядке на стороне сервера. Отфильтруйте список, чтобы выбрать только те, у которых IsSelected имеет значение true.

   <%= Html.Hidden("selections.Index", i) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...