【问题标题】:Asp.Net Core 5.0 Using jQuery in Partial ViewAsp.Net Core 5.0 在局部视图中使用 jQuery
【发布时间】:2021-05-04 14:01:22
【问题描述】:

我正在使用带有 Ajax 的局部视图在主视图上显示用户数据。脚本从主视图运行。

现在我想在部分结果中添加一个“删除”按钮,但在部分视图中编写带有 ajax 调用的脚本时遇到问题。

如何通过jQuery和Ajax处理部分表单数据来解决这个问题?

这是我的部分观点:

@foreach (var i in Model.Users)
{

        <div>
            <form id="deletForm">
                <input name="Id" id="Id" value="@i.Id" hidden />
                <input name="UserId" id="userId" value="@i.ApplicationUserId" hidden />
                <button type="submit" class="close-icon" id="deleteBtn"></button>
            </form>
            <div class="class" data-toggle="tooltip" title="@i.ApplicationUser.FullName">@i.ApplicationUser.Name.ToUpper()</div>
        </div>
    
}



<script>
    $("#deleteBtn").click(function (e) {
        e.preventDefault();
        var formdata = $("#deletForm").serialize();
        alert(formdata);
        alert('I got here');

    });
</script>

【问题讨论】:

  • 您好,您能详细说明一下您的问题吗?

标签: jquery ajax asp.net-core partial-views


【解决方案1】:

现在我想在部分结果中添加一个“删除”按钮,但是在部分视图中编写带有 ajax 调用的脚本时遇到问题。

请注意,您将&lt;form id="deletForm"&gt; 放在局部视图中的@foreach 循环中,这会导致许多html 元素具有相同的id 属性。

为了达到您的要求,您可以尝试修改如下代码。

局部视图

@foreach (var i in Model.Users)
{

    <div>
        <form class="deletForm">
            <input name="Id" value="@i.Id" hidden />
            <input name="UserId" value="@i.ApplicationUserId" hidden />
            <button type="submit" class="close-icon deleteBtn"></button>
        </form>
        <div class="class" data-toggle="tooltip" title="@i.ApplicationUser.FullName">@i.ApplicationUser.Name.ToUpper()</div>

}

在主视图中

<script>
    $(function () {
        $(".deleteBtn").click(function (e) {
            e.preventDefault();
            var formdata = $(this).parent(".deletForm").serialize();
            alert(formdata);
            alert('I got here');

            //code logic here of making ajax request(s)
        })
    })
</script>

【讨论】:

  • 感谢您的回答。我遇到的问题是脚本没有在这部分运行。我已经修改了部分视图,并在主视图中添加了屏幕,但脚本无法到达部分部分。
  • 在主视图中我使用的是剑道向导组件。我添加了$(document).on('focusin', '.deleteBtn', function () { },现在脚本实现了,但问题是如果我添加3个条目,如果我点击第一个添加的脚本运行3次,第二个添加一个2次,第三个添加一个它运行一次。所以它在所有添加元素的循环中运行。如何防止这种行为并使每个表单只运行一次?非常感谢。
  • 我注意到循环并不取决于添加的条目数,而是取决于我点击了多少按钮。
  • 可以分享一下你的主视图的详细代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2011-04-08
相关资源
最近更新 更多