c# - MVC : Submit one form from a page with multiple forms

标签 c# asp.net asp.net-mvc forms post

我在 ASP.NET 3.5 MVC 应用程序中工作,其中有一个包含多个表单的 View 。表格 1 包含有关产品的信息,并将形成一个带有删除按钮的购物车。表格 2 如下所示,用于从购物车中获取信息并创建订单。

<% using (Html.BeginForm()) { %>
   <%=Html.Hidden(Order.ProductId", "E63EF586-F625-4C8D-B82E-E63A6FA4A63C")%>
   <%=Html.Hidden(Order.Amount", 16)%>
   <input type="submit" value="Pay" />

第一个表单包含一个类似的 beginform,它带有一个 foreach 循环,用于从模型中获取有关产品的信息。 当我在第二个表单上使用提交按钮时,似乎所有内容都已提交,并且第一个表单的 Controller 中的操作正在尝试处理请求。这就是错误发生的地方,因为 View 模型中的信息与预期不符。

试图处理请求的 Controller :

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ShowShoppingcartForm([Bind(Prefix = "Order")] MyViewmodel viewModel)
{
//..
}

期望处理请求的 Controller :

[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" />
<%} %>

最佳答案

您可以选择使用 Html.BeginForm 指定操作和 Controller 的名称

<% using (Html.BeginForm("SaveOrder", "ControllerName", FormMethod.Post, null))
{ %>
....

关于c# - MVC : Submit one form from a page with multiple forms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606535/

相关文章:

c# - 我可以使用 TraceListener 在初始化数据中添加时间戳吗?

html - 如何让四个div引用同一张图片

c# - IIS6 在经典 ASP 网站下运行 ASP.NET 虚拟目录

c# - Crystal Reports中如何获取列的总和?

c# - 如何阻止 ASP.NET Web API 隐式解释 HTTP 方法?

c# - 在 signalr 中管理多个浏览器选项卡

asp.net-mvc - ASP.NET MVC 5 自定义脚手架选项 [t4 模板]

c# - 请求失败,HTTP 状态为 401 : Unauthorized - IIS Upgrade - WebService & Web Application

c# - 处理对象时避免重复编码

c# - UWP c# DataRequest.FailWithDisplayText 已弃用