Html.RenderPartial和Ajax.BeginForm - >提交被称为两次(H

2019-07-20 10:11发布

我有以下索引视图:

@model BoringStore.ViewModels.ProductIndexViewModel
@{
    ViewBag.Title = "Index";
}

<h2>Produkte</h2>

<div id='addProduct'>
    @{ Html.RenderPartial("Create", new BoringStore.Models.Product()); }
</div>

<div id='productList'>
    @{ Html.RenderPartial("ProductListControl", Model.Products); }
</div>

该“productList的”仅仅是一个所有产品清单。

该addProduct命令使我创建视图:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<div id="dialog-confirm" title="Produkt hinzufügen" style="display:none">
@using (Ajax.BeginForm("Index_AddItem", new AjaxOptions { UpdateTargetId = "productList" }))
{ 
    @Html.Raw(DateTime.Now.ToString());

    <div>
        @Html.LabelFor(model => model.Name)
        @Html.EditorFor(model => model.Name)
    </div>
    <br />
    <div>
        @Html.LabelFor(model => model.Price)
        @Html.EditorFor(model => model.Price)
    </div>
    <br /><br />
    <div>
        <input type="submit" value="Produkt hinzufügen" />
    </div>
}

当提交表单,在我的控制器的Index_AddItem-方法被调用。 不幸的是,形式总是调用该方法的两倍。 :(

有人可以帮我吗?

Answer 1:

不包括你的部分看法里面的脚本! 他们应该去你的“主”视图或您的_layout.cshtml

你的问题是,你已经包括了jquery.unobtrusive-ajax.min.js在你的页面的两倍。 一旦你Create的部分,一旦别的地方。 因为如果包括脚本多次将认购提交事件上多次,所以你会得到一个单一的点击提交多。

因此,请确保您有包括脚本只在一个页面一次。 所以移动jquery.unobtrusive-ajax.min.js引用到你的索引视图。



文章来源: Html.RenderPartial and Ajax.BeginForm -> Submit is called twice