使用jQuery上的ASP.NET MVC 3 Ajax.BeginForm问题在Chrome上提交

时间:2012-01-05 13:50:18

标签: jquery ajax asp.net-mvc-3 google-chrome c#-4.0

人。我整个上午一直在寻找我的问题的答案,但我没有任何成功。

这是问题 - >我有一个Ajax.BeginForm,它由一个复选框提交,使用jquery:

    <% using (Ajax.BeginForm("Edit", "Products",
                                                        new AjaxOptions
                                                        {
                                                            HttpMethod = "POST",
                                                            LoadingElementId = "divLoading",
                                                            UpdateTargetId = "divProducts"
                                                        }))
       {%>
       <%: Html.HiddenFor(mod => Model.ProductId) %>
    <%:Html.CheckBoxFor(mod => Model.ShowInactiveProducts,
                                              new
                                                  {
                                                      onchange =
                                                  "jQuery('#ShowInactiveProducts').closest('form').submit(); return false;"
                                                  })%> <%:Products_Resource.ShowInactive%>
    <%
       }%>

此代码在Firefox中运行良好,但在Chrome中它会触发提交两次,其中第一次Request.IsAjaxRequest()返回true,第二次返回false。

我已经阅读了很多关于不引人注意的Ajax和东西的文章,但它们都没有为我工作。

有趣的是,当我使用输入类型提交时,它就像一个魅力......

有没有人知道我该怎么做才能解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:删除复选框的onchange属性,并通过jquery:

执行
<script>
    $("#mycheckbox").change(function(){
    "jQuery('#ShowInactiveProducts').closest('form').submit();
    });
</script>

如果这不起作用,请尝试创建隐藏的提交按钮,并使复选框在更改时单击它。