我有以下索引视图:
@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-method被调用。不幸的是,表单总是调用该方法两次。:(
有人能帮帮我吗?
发布于 2013-02-23 22:34:30
不要在你的局部视图中包含脚本!他们应该去你的“主”视图或你的_layout.cshtml。
您的问题是您在页面中包含了两次jquery.unobtrusive-ajax.min.js。一次在您的Create partial中,一次在其他地方。因为如果您多次包含该脚本,它将多次订阅submit事件,因此您将通过一次单击获得多个submit。
因此,请确保在一个页面中只包含了一次脚本。因此,将jquery.unobtrusive-ajax.min.js引用移动到索引视图中。
发布于 2020-07-20 19:16:27
确保您没有在布局中复制如上所述的jquery.unobtrusive-ajax.min.js文件,您可以使用浏览器检查器进行检查
我遇到的另一个可能导致此错误的问题是在ajax请求中使用jquery休眠表单,如下所示
$("form").trigger("reset"); //just remove this linehttps://stackoverflow.com/questions/15041540
复制相似问题