我有一辆购物车,其中有以下内容:
有一个“更新”按钮。
其想法是用户可以修改购物车中每个产品的数量,然后单击"Update“来提交更改。
如何使用MVC编写“更新”按钮?您是否会将整个购物车包装在一个表单中,将其回发到自己,并以某种方式在FormCollection中定位数量值?这种方法的问题在于,由于每个“删除”按钮都以自己的形式存在,我现在将在页面上执行嵌套表单,我甚至不确定这是否被允许。
<% using (Html.BeginForm("Index", "Cart")) { %>
<table>
<tr>
<th> </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" />
<%} %>
我将如何将底部的输入合并到这个表单中?
发布于 2009-10-12 21:16:41
我们在我们的项目中使用了一个单独的表单来删除,使用了一个完全不同的更新表单。它们都会在CartController中进行不同的POST操作。
UPDATE:示例提供(在原始HTML中):
<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>
发布于 2009-10-12 21:15:46
HTML中不显式支持嵌套表单。
但是,您可以有多个窗体,这是允许的。将每个产品包装在一个单独的表单中,向每个表单post url添加一个特定于产品的参数,以便在相应的控制器操作中知道哪些产品需要更新。
就像这样:
<form action="/update/21342345">
</form>
如何将底部的输入合并到这个表单中?
有两种选择:
建议同时适用于两个按钮,提交和删除。您可以在post url中指定任务,例如:
action="/update/21342345"
或
action="/delete/21342345"
发布于 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()“;
https://stackoverflow.com/questions/1556986
复制相似问题