代码之家  ›  专栏  ›  技术社区  ›  LiamGu

使用MVC从动态表单获取发布的数据

  •  0
  • LiamGu  · 技术社区  · 14 年前

    我有一个包含表单的页面,其中一部分是根据订单上的SKU动态生成的。

    <% for each i in ViewData.Model %>
                        <script type="text/javascript">
                            $(function () {
                                $('#return_<%=i.SKUN%>').change(function () {
                                    if ($('#return_<%=i.SKUN%>').val() > $('#qty_<%=i.SKUN%>').val()) {
                                        $('#Discrepancy').val("Yes");
                                    } else {
                                        $('#Discrepancy').val("");
                                    }
                                });
                            });
                        </script>
                        <tr>
                            <td style="text-align: left"><%= i.SKUN%></td>
                            <td style="text-align: left; width: 360px"><%= i.DESCR%></td>
                            <td style="text-align: left">&pound;<%= i.PRIC%></td>
                            <td style="text-align: left"><%= i.QUAN%></td>
                            <td style="text-align: left">&pound;<%= i.EXTP%></td>
                            <td style="text-align: left"><input type="hidden" name="qty_<%=i.SKUN%>" id="qty_<%=i.SKUN%>" value="<%= i.QUAN%>"/><input type="text" name="return_<%=i.SKUN%>" id="return_<%=i.SKUN%>" style="width:50px;" class="required"/>
                                <%  If i.FLAG3 = "T" Then
                                       %> <img src="../../Content/images/icons/error.png" alt="This SKU is subject to a <%=Html.ViewData("RestockFee") %>% restocking fee" title="This SKU is subject to a <%=Html.ViewData("RestockFee") %>% restocking fee"/><%
                                    End If%>
                            </td>
                        </tr>
                        <% Next%>
    

    这一点也不完美,但它能完成目前的工作。

    我正在挣扎的是 return_<%=i.SKUN%> 是一系列动态生成的文本框,每个顺序都会发生变化,尽管它们仍然遵循 返回“%=i.SKUN%> ,如何在处理窗体post的控制器中获取它们的值?

    编辑: 还需要注意的是,这些字段都不是必需的字段,并且每个订单的文本框数量都有所不同。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    不能将命名约定更改为:

    <input 
        type="text"
        name="skuns[<%= index %>]"
        id="return_<%= i.SKUN %>"
        style="width:50px;"
        class="required"
        value="<%= i.SKUN %>"
    />
    

    哪里 index 将是一个从0到n的递增变量。这样控制器操作可能如下所示:

    Public Function Result(skuns As String()) As ActionResult
    

    让默认的模型绑定器来完成这项工作。