代码之家  ›  专栏  ›  技术社区  ›  Sebastián

页面列表视图上的MVC项

  •  2
  • Sebastián  · 技术社区  · 14 年前

    我使用MVC并将数据加载到ListView中。一切都很好,这是你的看法:

    <%  
    Dim varDataSource As New iSAM.EntityiSAMRepository  
    ListViewDatos.DataSource = varDataSource.ListarCruceCertificadosPrecancelados  
    ListViewDatos.DataBind()  
    %>  
    
    <asp:ListView runat="server" ID="ListViewDatos">  
        <LayoutTemplate>  
            <table id="ListViewDatos" class="tablesorter" style="width:100%">  
                <thead>  
                    <tr>  
                        <th style="width:2%">  
                        </th>  
                        <th style="width:6%" align="left">  
                            <a href="#" style="text-decoration:none"><font color="black">Póliza</font></a>  
                        </th>  
                    </tr>  
                </thead>  
    
                <tbody>  
                    <tr id="itemPlaceholder" runat="server" />  
                </tbody>  
    
                <tfoot>  
                    <tr id="pager" align="center">  
                        <td colspan="7" style="border-right: solid 3px #7f7f7f;">  
                            <asp:Image ID="Image1" ImageUrl="~/Images/first.png" CssClass="first" ToolTip="Inicio" runat="server" />  
                            <asp:Image ID="Image2" ImageUrl="~/Images/prev.png" CssClass="prev" ToolTip="Anterior" runat="server" />  
                            <input type="text" class="pagedisplay" readonly="readonly" style="width:100px; text-align:center" />  
                            <asp:Image ID="Image3" ImageUrl="~/Images/next.png" CssClass="next" ToolTip="Siguiente" runat="server" />  
                            <asp:Image ID="Image4" ImageUrl="~/Images/last.png" CssClass="last" ToolTip="Fin" runat="server" />  
                            <select class="pagesize">  
                                <option selected="selected" value="10">10</option>  
                                <option  value="20">20</option>  
                                <option  value="50">50</option>  
                                <option  value="100">100</option>  
                            </select>  
                        </td>  
                    </tr>  
                </tfoot>  
            </table>  
        </LayoutTemplate>  
    
        <ItemTemplate>
            <%
                Static varCount As Long = 0
                Dim varID1 As Long = Model(varCount).ID1
                Dim varID2 As Long = Model(varCount).ID2
                varCount = varCount + 1
            %>
    
            <tr>
                <td style="border-width:medium">
                    <%=Html.CheckBox("chkCancel_" & Val(varID1) & "_" & Val(varID2), False, Nothing)%>
                </td>
                <td>
                    <%#Eval("WhatEver")%>
                </td>
            </tr>
        </ItemTemplate>
    </asp:ListView>
    
    <p>
        <input type="submit" value="Cancel" id="cmdCancel" onclick="if(!confirm('Are you sure?')) return false;" />
    </p>
    

    我的问题出在控制器上,因为我需要恢复加载到ListView中的所有复选框,但是请求。Form只返回根据分页显示的复选框,我的意思是,如果我使用10个项目的分页,则请求。Form得到10个复选框,正如我所说,我有60个复选框(例如),我需要使用Request.Form或其他东西(可能是一个技巧:)获得60个复选框。 这是控制器:

    Function ListMyData(ByVal varErr As String) As ActionResult  
            Dim arrIDs(,) As String = Nothing  
            Dim varcount As Long = 0  
    
            For Each varItem In Request.Form  
                If InStr(varItem.ToString, "chkCancel") > 0 Then  
                    If Request.Form(varItem) = "true,false" Then  
                        ReDim Preserve arrIDs(1, varCount)  
                        Dim varCode As String = Mid(varItem, InStr(varItem, "_") + 1)  
                        arrIDs(0, varCount) = Mid(varCode, 1, InStr(varCode, "_") - 1)  
                        arrIDs(1, varCount) = Mid(varCode, InStr(varCode, "_") + 1)  
                        varCount = varCount + 1  
                    End If  
                End If  
            Next  
    
            Return View()  
    End Function  
    

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  3
  •   rboarman    14 年前

    我不建议将ASP.NET控件与MVC混合。很多都需要MVC中没有维护的状态。我用的时候总是有问题。

    我建议您使用MVCContrib的网格或jQuery的网格。两者都非常好用。我倾向于使用mcvcontrollib,因为我喜欢它的工作方式,而且不需要复杂的客户端处理。

    http://mvccontrib.codeplex.com/