首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC中的嵌套表单

ASP.NET MVC中的嵌套表单
EN

Stack Overflow用户
提问于 2009-10-12 21:14:02
回答 3查看 32.2K关注 0票数 11

我有一辆购物车,其中有以下内容:

  • 购物车
  • 中每个产品都有一个“删除”按钮,购物车
  • 中每个产品都有一个可编辑的数量文本框,整个购物车

有一个“更新”按钮。

其想法是用户可以修改购物车中每个产品的数量,然后单击"Update“来提交更改。

如何使用MVC编写“更新”按钮?您是否会将整个购物车包装在一个表单中,将其回发到自己,并以某种方式在FormCollection中定位数量值?这种方法的问题在于,由于每个“删除”按钮都以自己的形式存在,我现在将在页面上执行嵌套表单,我甚至不确定这是否被允许。

代码语言:javascript
运行
复制
        <% using (Html.BeginForm("Index", "Cart")) { %> 
        <table>
            <tr>
                <th>&nbsp;</th>
            </tr>
        <% foreach (var item in Model) { %>
            <tr>
                <td>
                    <input name="qty" type="text" value="<%=item.Quantity%>" maxlength="2" />
                    <% using (Html.BeginForm("RemoveOrderItem", "Cart")) { %>                       
                        <%= Html.Hidden("ShoppingCartItemID", item.ShoppingCartItemID) %>
                        <input name="add" type="submit" value="Remove" />
                    <%} %>
                </td>
            </tr>
        <% } %>
        </table>

        <input name="update" type="submit" value="Update" />
        <%} %>  

我将如何将底部的输入合并到这个表单中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-12 21:16:41

我们在我们的项目中使用了一个单独的表单来删除,使用了一个完全不同的更新表单。它们都会在CartController中进行不同的POST操作。

UPDATE:示例提供(在原始HTML中):

代码语言:javascript
运行
复制
<form action="/cart/updatequantity" method="post"> 
    <input type="hidden" name="ProductSku" value="ABC-123" /> 
    <input name="quantity" class="quantity" size="2" maxlength="2" type="text" value="1" /> 
    <input type="submit" value="Update" /> 
</form> 

<form action="/cart/removeitem" method="post"> 
    <input type="hidden" name="productSku" value="ABC-123" /> 
    <input type="submit" value="Remove" /> 
</form> 
票数 4
EN

Stack Overflow用户

发布于 2009-10-12 21:15:46

HTML中不显式支持嵌套表单。

但是,您可以有多个窗体,这是允许的。将每个产品包装在一个单独的表单中,向每个表单post url添加一个特定于产品的参数,以便在相应的控制器操作中知道哪些产品需要更新。

就像这样:

代码语言:javascript
运行
复制
<form action="/update/21342345">
</form>

如何将底部的输入合并到这个表单中?

有两种选择:

  1. 为每个表单都提供了自己的提交按钮。把它叫做“更新这个产品”。您将在url parameter.
  2. Wrap中指定要更新哪个表,并将生成的表连同提交按钮一起添加到一个表单中。提交时,您需要更新表单中包含的所有产品。或者以某种方式检测哪些是更改,并且只更新这些。

建议同时适用于两个按钮,提交和删除。您可以在post url中指定任务,例如:

代码语言:javascript
运行
复制
action="/update/21342345"

代码语言:javascript
运行
复制
action="/delete/21342345"
票数 9
EN

Stack Overflow用户

发布于 2009-10-12 21:22:46

我在类似的情况下使用jQuery。Remove按钮调用post()方法,如果它成功,该产品的div元素将从页面(remove()方法)中删除。更新可以提交正常的表格。您还可以使用jQuery编程ajax方法,然后动态加载购物车,而不必重新加载整个页面(通过post()回调中调用的$().html()方法)。

删除可能类似于:

onclick="if (确认(‘请确认.’)) $.post('/Cart/Remove/63',{},函数(数据){ if (data == 'ok') {$(‘#cart-element-63’).remove()“;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1556986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档