gpt4 book ai didi

asp.net-mvc-3 - Html.RenderPartial 和 Ajax.BeginForm -> Submit 被调用两次

转载 作者:行者123 更新时间:2023-12-02 05:10:29 24 4
gpt4 key购买 nike

我有以下索引 View :

@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 呈现我的创建 View :

<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>
}

提交表单时,我的 Controller 中的 Index_AddItem 方法被调用。不幸的是,表单总是调用该方法两次。 :(

有人可以帮我吗?

最佳答案

不要在局部 View 中包含脚本!它们应该位于您的“主” View 或 _layout.cshtml 中。

您的问题是您在页面中包含了两次 jquery.unobtrusive-ajax.min.js 。一次在您的 Create 部分中,一次在其他地方。因为如果您多次包含该脚本,它将多次订阅提交事件,因此您只需单击一次即可获得多次提交。

因此请确保您只在页面中包含该脚本一次。因此,将 jquery.unobtrusive-ajax.min.js 引用移动到索引 View 中。

关于asp.net-mvc-3 - Html.RenderPartial 和 Ajax.BeginForm -> Submit 被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com