在 ASP.NET Core 中使用 ajax 向控制器发送数据

Posted

技术标签:

【中文标题】在 ASP.NET Core 中使用 ajax 向控制器发送数据【英文标题】:Sending data to controller with ajax in ASP.NET Core 【发布时间】:2021-10-23 02:51:43 【问题描述】:

我无法使用 ajax 将数据发送到控制器。变为“空”。请帮帮我。

我的 html 代码:

<div class="modal fade" id="sagTikMenuKategoriGuncelleModal" data-bs-backdrop="static">
                <div class="modal-dialog modal-dialog-centered">
                    <div class="modal-content">
                        <div class="modal-header" style="font-weight: 600; color: rgb(157, 163, 173); background-color: rgb(248, 248, 248);">
                            <h5 class="modal-title">Kategori Alanı Güncelle</h5>
                            <button class="btn-close" data-bs-dismiss="modal"></button>
                        </div>
                        <div class="modal-body">
                            <div class="col-md-12 pb-4 text-center kategoriAlanlariModalBodyDiv" style="font-weight: bold; color:rgb(168, 174, 185);">
                                <span>Kategori alanınınız adını buradan güncelleye bilirsiniz..</span>
                            </div>
                            <form class="needs-validation" novalidate id="sagTikMenuKategoriGuncelleModalForm">
                                <div class="row g-3">
                                    <div class="col-md-12">
                                        <label for="kategoriAlanGuncelleAdi" class="form-label">Kategori Alan Adı *</label>
                                        <input id="kategoriAlanGuncelleAdi" type="text" class="form-control" placeholder="Kategori Alan Adı" required>
                                        <div class="invalid-feedback">
                                            Bu Alan Boş Geçilemez
                                        </div>
                                    </div>
                                </div>
                                <div class="modal-footer mt-3">
                                    <button class="btn btn-secondary" type="submit" id="sagTikMenuKategoriGuncelleButonModal">Güncelle</button>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>

我的 jquery 代码:

var kategoriAlanGuncelleId;
    var kategoriAlanGuncelleAd;

$(".urunKategorileriAlanAdlari > span").contextmenu(function () 
        kategoriAlanGuncelleId = $(this).attr("id");
        kategoriAlanGuncelleAd = $(this).text();
    );

$("#sagTikMenuKategoriGuncelleButonModal").click(function () 
        var kategoriAlanAdGuncel = new Object();
        kategoriAlanAdGuncel.urunKategorileriKategoriAdi = $("#kategoriAlanGuncelleAdi").val();
        kategoriAlanAdGuncel.urunKategorileriId = kategoriAlanGuncelleId;


        var kategoriAlanGuncelAdres = "@Url.Action("kategoriAlanGuncelle", "kategoriAlanlari")";

        $.ajax(
            url: kategoriAlanGuncelAdres,
            type: "POST",
            data: kategoriAlanAdGuncel,
            success: function (veri) 
              
            ,
            error: function (hata, ajaxoptions, throwerror) 
                alert("Hata :" + hata.status + " " + throwerror + " " + hata.responseText);
            
        );
    );

c#控制器:

[HttpPost]
        public IActionResult kategoriAlanGuncelle(urunKategorileri mod)
        
            if (mod == null)
            
                return RedirectToAction("Kategoriler", "Home");
            

            if (mod.urunKategorileriId == 0 || mod.urunKategorileriKategoriAdi == null)
            
                return RedirectToAction("Kategoriler", "Home");
            

            var veri = kategoriAlanlariServices.kategoriGuncelle(mod);

            if (veri == 0)
            
                return RedirectToAction("Kategoriler", "Home");
            

            return RedirectToAction("Kategoriler", "Home");
        

我用“alert”检查了我在 jquery 中收到的数据。他们满了。但仍然空值进入控制器。我在jquery中创建的对象变量的导数和表的columns是一样的,没找到问题

【问题讨论】:

是打到success 回调还是error 回调? C# asp.net 核心控制器没有获得价值。与成功或错误无关 @Bhtuhan,我的意思是jquery回调,是成功还是出错 另外,您如何以及在哪里记录控制器中的值? 我不知道。出于某种原因,它把我扔到了主页上。他给出的链接是:“localhost:5001/Admin?” 【参考方案1】:

尝试明确设置contentTypedatatype 例如。

contentType: 'application/json',
dataType: 'json',

【讨论】:

我试过了。不幸的是,该值再次为空。【参考方案2】:

试试这个:

$.ajax(
    url: kategoriAlanGuncelAdres,
    type: "POST",
    data:  "mod": kategoriAlanAdGuncel ,
    success: function (veri) 
        
    ,
    error: function (hata, ajaxoptions, throwerror) 
        alert("Hata :" + hata.status + " " + throwerror + " " + hata.responseText);
    
);

【讨论】:

很遗憾没有发生【参考方案3】:

Alexander SolonikChris Wong 的答案都是正确的。而且我还在我的本地检查了你的代码,它工作正常。而且我没有使用你关于模态的代码。

我不确定问题出在哪里,所以我只能给你一般性的建议。然后我确定问题可能出现在modal中的表单中,需要通过以下步骤来定位问题。

步骤

    在modal外创建一个div,然后创建一个按钮点击事件。您可以将 urunKategorileri_Model 的值写为固定值。其他代码相同进行测试。

    如果成功,则说明与modal有关。

    按照以下步骤操作。

    按F12,查看请求详情。

    如果你得到 404,这意味着你的请求 url 是错误的。如果你得到 500,这意味着你的 webapp 运行时出现了一些错误。

    如果你有 200 个,你可以调试你的 C# 代码。

【讨论】:

【参考方案4】:

你的代码是真的,我只是复制了它,它可以工作,但我认为你的问题出在你的控制器类中,只是让你的属性数据类型像我的一样

  public class urunKategorileri
    
        public string urunKategorileriKategoriAdi  get; set; 
        public int urunKategorileriId  get; set; 
    

我的 jquery 版本是 v3.5.1

【讨论】:

以上是关于在 ASP.NET Core 中使用 ajax 向控制器发送数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Razor 视图中使用 Ajax 进行 Asp.Net Core 表分页

ASP.Net Core使用Ajax局部更新

在 ASP.NET CORE 表单中使用 AJAX 返回 JSON

如何在带有 ADO.NET 的 ASP.NET Core MVC 中使用 jQuery Ajax 自动完成

如何在 asp.net core 中使用 ajax 创建评论列表? [关闭]

ASP.Net Core中使用jquery-ajax-unobtrusive替换Ajax.BeginForm