ajax应该发布由循环加载的局部视图的当前索引

ajax应该发布由循环加载的局部视图的当前索引,ajax,post,foreach,partial-views,Ajax,Post,Foreach,Partial Views,在我的页面上,我有一个图像旋转木马。每个图像块都是由图像和产品数据组成的局部视图。所以旋转木马实际上充满了通过循环从父部分视图加载的部分视图 当我选择要添加到购物车中的图像时,我使用ajax将其发布到控制器,这样就可以了 问题是ajax脚本为模型中的每个产品加载一次,即for循环的每次迭代和模型中的每个产品加载一次…脚本加载,结果是每个产品加载到购物车中…下面是一些代码 父部分 foreach (var p in Model) { <div id="view-option"

在我的页面上,我有一个图像旋转木马。每个图像块都是由图像和产品数据组成的局部视图。所以旋转木马实际上充满了通过循环从父部分视图加载的部分视图

当我选择要添加到购物车中的图像时,我使用ajax将其发布到控制器,这样就可以了

问题是ajax脚本为模型中的每个产品加载一次,即for循环的每次迭代和模型中的每个产品加载一次…脚本加载,结果是每个产品加载到购物车中…下面是一些代码

父部分

    foreach (var p in Model)
{
    <div id="view-option">
        @Html.Partial("../Product/_ProductTitleHome", p)
    </div>
}
子部分具有具有多个输入的窗体

                    <form id="addToCartForm" method="post" action="/Product/AddToCart">
                    <input type="hidden" name="ProductId" value="Model.ProductId" />
                    <input type="hidden" name="Sku" value="Model.Sku" />
                    <input type="hidden" name="Quantity" value="Model.MinQuantity" />
                    <input type="hidden" name="bundleItemsIds" value="Model.BundleItemsIds" />
                    <input type="hidden" name="SeoPageName" value="Model.SeoPageName" />
                     <button class="btn-card btn-add-cart red hvr-shadow" id="btn-addtocart-short" data-value="Model.ProductId"><i class="zf-cart"></i>ButtonAddToCart</button>
                    }
                </form>
ajax调用是这样的

$'btn-addtocart-short'。单击函数e{ event.currentTarget; //var dataObj=$'addToCartForm'。序列化; var dataObj={ ProductId:“@Model.ProductId”, Sku:“@Model.Sku”, 数量:'@Model.MinQuantity', bundleItemsIds:“@Model.bundleItemsIds”, SeoPageName:“@Model.SeoPageName” } 如果dataObj!={ $.ajax{ url:“/Product/AddToCart”, 类型:POST,, 数据:dataObj, 成功:功能反应{ 警惕“这起作用了”; }, }; } };

所以再一次…如果我点击一个图像块将其添加到购物车中,ajax执行的次数与模型中的产品执行的次数一样多…这也是因为这个部分是通过循环加载的

因此,我需要找到一种方法,让ajax只对单击的项目的索引执行


请帮助

问题在于局部视图。每个图像都在一个局部视图中,对于加载到滑块中的所有图像…每次加载局部视图并执行Ajax…因此解决方案是将代码从局部视图中拉出,并上升一级到父视图…插入代码,问题就解决了。因为父视图只加载了一次,所以加载的所有图像和Ajax只触发了一次。

当jquery构建dataObj时,它似乎只从第一个局部视图获取数据,而不管单击了哪个元素。