【发布时间】:2010-04-09 10:12:09
【问题描述】:
我在一个 ASP.NET 3.5 MVC 应用程序中工作,其中我有一个包含多个表单的视图。表格 1 包含有关产品的信息,并将形成一个带有删除按钮的购物车。表格2如下,用于从购物车中获取信息并创建订单。
<% using (Html.BeginForm()) { %>
<%=Html.Hidden(Order.ProductId", "E63EF586-F625-4C8D-B82E-E63A6FA4A63C")%>
<%=Html.Hidden(Order.Amount", 16)%>
<input type="submit" value="Pay" />
第一个表单包含一个类似的带有 foreach 循环的 beginform,用于从模型中获取有关产品的信息。 当我在第二个表单上使用提交按钮时,似乎所有内容都已提交,并且第一个表单的控制器中的操作正在尝试处理请求。这就是发生错误的地方,因为视图模型中的信息与预期的不对应。
试图处理请求的控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ShowShoppingcartForm([Bind(Prefix = "Order")] MyViewmodel viewModel)
{
//..
}
预期处理请求的控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveOrder([Bind(Prefix = "Order")] MyViewmodel viewModel)
{
//..
}
修改后:
好的,我尝试了您的建议,但不幸的是我无法让它发挥作用。我改变了如下内容;
表格一:
<%foreach (var cartItem in Model.ProductList) { %>
<% using (Html.BeginForm("ShoppingCart","ControllerName", FormMethod.Post,null)) { %>
<tr>
<td> <%=Html.Hidden("Cart.ProductVariantId", cartItem.ProductVariant.Id)%>
<%=Html.Encode(cartItem.ProductVariant.Product.Name)%> </td>
<td> <%=Html.Encode(cartItem.ProductVariant.Product.Description)%> </td>
<td> <%=Html.TextBox("Cart.Amount", cartItem.Amount)%></td>
<td> <%=Html.Encode(cartItem.Amount)%> </td>
<td> <%=Html.Encode(cartItem.Product.PriceInCents)%> </td>
<td> <input type="submit" value="Remove" width="50px" /> </td>
<td> <input type="submit" value="Submit" width="50px" /> </td>
</tr>
<% } %>
<% } %>
表格2:
<% using (Html.BeginForm("SaveOrder", "ControllerName", FormMethod.Post, null))
{%>
<%=Html.Hidden("Order.ProductId", "E63EF586-F625-4C8D-B82E-E63A6FA4A63C"")%>
<%=Html.Hidden(Order.Amount", 1)%>
<input type="submit" value="Pay" />
<%} %>
【问题讨论】:
标签: c# asp.net asp.net-mvc forms post