【问题标题】:How I can POST an id to ASP.Net controller from view using AJAX?如何使用 AJAX 从视图中将 id 发布到 ASP.Net 控制器?
【发布时间】:2021-02-09 07:40:49
【问题描述】:

我正在尝试向控制器发送一个 ID,但没有发送任何内容。这是我在使用 Sweet Alert 的警报中做的。

这是视图的代码:

@foreach (var item in Model)
{
   <div>
       <a class="btn btn-danger py-2 my-1" onclick="Clickfn(@item.CertificadosID)" data-id="@item.CertificadosID">Eliminar</a>
   </div>
}

<script>
function Clickfn(id) {
    swal({
        title: "¿Estas seguro de que quieres eliminar esto?",
        text: "La información se perdera hasta que vuelva a editarla",
        icon: 'warning',
        dangerMode: true,
        buttons: [
            { text: "Cancelar", visible: true, value: null, closeModal: true },
            { text: "Eliminar", visible: true, value: true, closeModal: true }
        ]
    }).then((value) => {
        if (value == true) {
            $.ajax({
                url: '/Certificados/Delete',
                type: 'POST',
                data: { "id": id }
            });
        }
    });
}
</script>

这是控制器动作的代码:

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> DeleteConfirmed(int id)
    {
        var certificados = await _context.Certificados.FindAsync(id);
        _context.Certificados.Remove(certificados);
        await _context.SaveChangesAsync();
        TempData["Mensaje"] = "Su certificado ha sido eliminado";
        return RedirectToAction(nameof(Index));
    }

【问题讨论】:

    标签: javascript jquery ajax asp.net-core razor


    【解决方案1】:

    这是一个使用 ajax 将数据发布到[ValidateAntiForgeryToken] 的演示:

    查看(需要在视图中使用&lt;form method="post"&gt;&lt;/form&gt;,这样才能拥有 $('input[name="__RequestVerificationToken"]')):

    <form method="post"></form>
        <a class="btn btn-danger py-2 my-1" onclick="Clickfn(1)" data-id="1">Eliminar</a>
    @section scripts{ 
    
    <script>
        function Clickfn(id) {
            var token = $('input[name="__RequestVerificationToken"]').val();
            $.ajax({
                url: '/Certificados/Delete',
                type: 'POST',
                headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
                data: { "id": id }
            });
        }
    </script>
    }
    

    控制器:

    [HttpPost, ActionName("Delete")]
            [ValidateAntiForgeryToken]
            public async Task<IActionResult> DeleteConfirmed(int id)
            {
                return Ok();
            }
    

    结果:

    【讨论】:

    • 如果我的回答对您有帮助,您可以标记一下吗?谢谢。:)
    • 实际上这是一个赞成票,如果你能accept as an answer,将不胜感激。这可以帮助那些遇到类似问题的人更容易找到答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 2022-01-10
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多