jquery ASP Net Core AJAX 发送NULL到控制器

fkvaft9z  于 2023-04-29  发布在  jQuery
关注(0)|答案(2)|浏览(161)

我正在尝试将数据发布到ASP中的控制器。NET Core在控制器中接收null。
我无法将任何数据POST到端点。
在行动中

[HttpPost]
    public ActionResult AddEarningg([FromBody] ProgramAddDTO program)
    {
        //_ProgramAppService.AddEarning(program);

        ViewData["tenantlist"] = ListItems();
        return View();
    }

在 AJAX 代码中:

<script src="~/Common/Scripts/select2.min.js"></script>
<script>
   

    $(document).ready(function () {
     $("#SubProductCodeId").select2();
    $("#ProductId").select2();
    $("#ProductCodeId").select2();
    $("#ProductCodeId").select2();
    $("#CountryId").select2();
    $("#MerchantId").select2();
    $("#ChannelId").select2();
    $("#SegmentId").select2();
    $("#BtnSubmit").click(function () {
        var formdata = {};
        
        formdata.institutionId = $("#InstitutionId").val();
        formdata.programName = $("#ProgramName").val();
        formdata.productId = $("#ProductId").val();
        formdata.productCodeId = $("#ProductCodeId").val();
         formdata.subProductId= $("#SubProductId").val();
         formdata.TransactionTypeId= $("#TransactionTypeId").val();
         formdata.ChannelId= $("#ChannelId").val();
         formdata.SubProductCodeId= $("#SubProductCodeId").val();
         formdata.SpendToEarn= $("#SpendToEarn").val();
         formdata.EquivalnetPoint= $("#EquivalnetPoint").val();
         formdata.CountryId= $("#CountryId").val();
         formdata.MCCId= $("#MCCId").val();
         formdata.MerchantId= $("#MerchantId").val();
         formdata.SegmentId= $("#SegmentId").val();
         formdata.CapsMin= $("#CapsMin").val();
         formdata.CapsMax= $("#CapsMax").val();
        formdata.PointsExpiry = $("#PointsExpiry").val();
        var t = JSON.stringify(formdata)
        $.ajax({
            url: '/app/Program/AddEarningg',
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ 'program': formdata }),
        
            success: function () {
                alert("test");
            }
        });
    });
       

    });     
</script>

在DTO程序AddDTO类中

public class ProgramAddDTO
{
    //public int? ProgramTypeId { get; set; }

    public int InstitutionId { get; set; }

    public string ProgramName { get; set; }

    public List<int?> ProductId { get; set; }
    public List<int?> ProductCodeId { get; set; }

    public List<int?> SubProductId { get; set; }
    public List<int?> SubProductCodeId { get; set; }

    public List<int?> CountryId { get; set; }

    public int? TransactionTypeId { get; set; }

   
    public int EquivalnetPoint { get; set; }
   
    public int PointValue { get; set; }
    public List<int?> ChannelId { get; set; }
    public List<int?> MCCId { get; set; }
    public List<int?> MerchantId { get; set; }
    public List<int?> SegmentId { get; set; }

    public decimal CapsMin { get; set; }

    public decimal CapsMax { get; set; }

    public int? PointsExpiry { get; set; }

    public int SpendToEarn { set; get; }
}

当我向post方法传递一个复杂的JSON时,它总是显示null。
我使用的是select2 jquery库。

7z5jn7bk

7z5jn7bk1#

首先,不要在json属性中使用大写字母。举个例子

formdata.TransactionTypeId

应该成为

formdata.transactionTypeId

所以一个。
因为默认情况下。net www.example.com 中查找未大写的json属性,并将其转换为C#中以大写字母开头的相应属性。
并且请求应该简单地与:

$.ajax({
        url: '/app/Program/AddEarningg',
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(formdata) ,

        success: function () {
            alert("test");
        }
wydwbb8l

wydwbb8l2#

它的工作是我当解析值从form到int

var pinstitutionId =parseInt( $("#InstitutionId").val());
        var pprogramName = $("#ProgramName").val();
        var pproductId = $("#ProductId").val();
        var pproductCodeId = $("#ProductCodeId").val();
        var psubProductId= $("#SubProductId").val();
        var ptransactionTypeId= parseInt($("#TransactionTypeId").val());
        var pchannelId= $("#ChannelId").val();
        var psubProductCodeId= $("#SubProductCodeId").val();
        var pspendToEarn= parseInt($("#SpendToEarn").val());
        var pequivalnetPoint= parseInt($("#EquivalnetPoint").val());
        var pcountryId= $("#CountryId").val();
        var pmCCId= $("#MCCId").val();
        var pmerchantId= $("#MerchantId").val();
        var psegmentId= $("#SegmentId").val();
        var pcapsMin= parseInt($("#CapsMin").val());
        var pcapsMax= parseInt($("#CapsMax").val());
        var ppointsExpiry =parseInt( $("#PointsExpiry").val()) ;

相关问题