我正在ASP.NET 3.5 MVC應用程序中使用多個表單進行視圖。表格1包含有關產品的信息,並將形成帶有刪除按鈕的購物車。表格2如下所示,用於從購物車獲取信息並創建訂單。MVC:從多種形式的頁面提交一個表格
<% 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)
{
//..
}
修改之後:
好吧,我想你建議,但不幸的是我不能得到它的工作。我改變了下面的東西;
表1:
<%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" />
<%} %>
機器人感謝您的快速響應,從來沒有新的這是可能的!我會嘗試一下並回復你。 – Rob 2010-04-09 11:25:51
好吧,我嘗試了你的解決方案,但不幸的是它不工作:(我修改了與當前情況相關的問題 – Rob 2010-04-09 11:52:41
在你的例子中,你已經調用了你的控制器「Controller」,它應該是你的控制器的* actual *名稱 – 2010-04-09 12:33:10