【问题标题】:Ajax.BeginForm inside Html.BeginFormHtml.BeginForm 中的 Ajax.BeginForm
【发布时间】:2010-10-21 15:01:28
【问题描述】:

我有一个用于编辑内容的视图,比如 Orders。订单有可以任意添加的行项目。所以一个主视图和嵌套的局部视图。

每个部分都应该有一个 ajax 表单,用于调整每个订单项的数量或其他。

因此:

Html.BeginForm()
{%>
    Ship to: blah blah blah  
    <%
    Ajax.BeginForm("EditLineItem", "Order", new { OrderLineItemID = Model.ObjectID }, itemAjaxOptions))
    {
        Item qty blah blah blah

        <--! (ajax form's submit button, etc.)-->
    }
    %>
    <--! (ajax form's submit button, etc.)-->
<%
}

我有一个如下所示的控制器:

[ActionName("Edit")]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult Edit(int orderID)
{
    blah, blah
}

[ActionName("EditLineItem")]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult EditLineItem(Guid orderLineItemID)
{
    blah, blah
}

我的问题是,当我提交 Ajax 表单时,我得到的是 Edit 方法而不是 EditLineItem 方法。两条路线都已映射。是否有一些我不知道的问题,例如“您不能在 Html 表单中提交 Ajax 表单”?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-ajax


    【解决方案1】:

    我不久前尝试过完全相同的事情。无论我做什么,它都不会进行 AJAX 提交。所以我认为答案是:是的,您不能将 AJAX 表单的提交按钮放在常规 html 表单中。

    但是,为什么要将部分提交与完整提交合并? 这个 imo 最简单的解决方法是使用带有 jQ​​uery 的 JSON 请求。

    例如,当您更改下拉列表 (id=Order) 时更新数量范围文本:

    <script type="text/javascript">
        $(document).ready(function() {
            $('select#Order').change(function() {
                $.getJSON('/Orders/UpdateQty/' + this.value, {},
                  function(data) {
                      $('#qty').html(data);
                  });
            });
        });
    
    </script>
    

    以及“订单”控制器中的代码:

    public class OrdersController : Controller
    {
        public ActionResult UpdateQty(int id)
        {
            return Json(yourLibrary.getQuantities(id));
        }
    }
    

    这个Link 可能会有所帮助。 问候

    编辑:

    所以.. 链接不再存在。不过多亏了互联网回程机,我们有this copy :)

    【讨论】:

      【解决方案2】:

      AFAIA AjaxForm 仍然呈现为表单标记,因此您将嵌套表单,您发现这是不行的。

      我认为弗朗西斯科是正确的(但我建议在您更新某些内容时实现 post 而不是 get)。

      亲切的问候, TP

      【讨论】:

        猜你喜欢
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 2021-02-21
        相关资源
        最近更新 更多