Ajax.Beginform提交调用两次但不在部分视图中

时间:2014-06-16 23:30:15

标签: ajax asp.net-mvc asp.net-mvc-4

  1. 我在我的_Layout.cshtml文件中包含了jquery.unobtrusive-ajax.min.js文件。这是唯一的地方,这个文件是参考。
  2. 我有一个使用Ajax.Beginform()
  3. 的部分视图
  4. 我有一个视图(非部分)也使用Ajax.BeginForm()
  5. 部分视图按预期工作,提交被调用一次。 非部分View会两次调用提交。

    我可以解决这个问题的唯一方法是从_Layout.cshtml文件中删除... ajax.min.js文件并将其放在局部视图中。执行此操作后,“视图”和“部分”视图仅提交一次。

    其中一个回复here建议不要使用... ajax.min.js文件,因为Ajax.Beginform()在没有它的情况下也能正常工作 - 但这似乎与其他帖子没有关系。

    正确使用的任何想法?

    谢谢!

    **更新** 这是不起作用的配置:

    我的_Layout.cshtml文件中的脚本:

        <script src="@Url.Content("~/Scripts/kendo/2014.1.528/jquery.min.js")"></script>
    <script src="@Url.Content("~/Scripts/kendo/2014.1.528/kendo.all.min.js")"></script>
    <script src="@Url.Content("~/Scripts/kendo/2014.1.528/kendo.aspnetmvc.min.js")"></script>
    <script src="@Url.Content("~/scripts/kendo.modernizr.custom.js")"></script>
    <script src="@Url.Content("~/Scripts/kendo.web.ext.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
    <script src="@Url.Content("~/Scripts/bootstrap.js")"></script>
    

    这是我视图中的Ajax.BeginForm():

    @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result", OnSuccess = "OnSuccess" }))
    {
    ...
    }
    

    这是我局部视图中的Ajax.BeginForm():

    @using (Ajax.BeginForm("SaveEfficiencyMetrics", "Plan",
                        new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "result", OnSuccess = "OnSuccess", InsertionMode = InsertionMode.Replace },
                        new { target = "_self", id = "_SpaceEfficiencyMetrics" }))
        {
        ...
        }
    

    再次,部分视图工作,提交被调用一次。但是,主视图提交被调用两次。

    我已经确认我没有两次引用该脚本。

0 个答案:

没有答案