C# MVC控制器参数始终为空

C# MVC控制器参数始终为空,c#,ajax,asp.net-mvc,asp.net-ajax,C#,Ajax,Asp.net Mvc,Asp.net Ajax,我的ajax代码 function gonder() { var params = { DonationInfo: { name: $('#name').val(), lastname: $('#lastname').val(), phone: $('#phone').val(), type: $('#type').val(), amounth: $('

我的ajax代码

function gonder() {
    var params = {
        DonationInfo: {
            name: $('#name').val(),
            lastname: $('#lastname').val(),
            phone: $('#phone').val(),
            type: $('#type').val(),
            amounth: $('#amounth').val(),
            quentity: $('#quentity').val()
        }
    };
    $.ajax({
        url: '@Url.Action("Index", "Benafactor")',
        type: 'POST',
        async: true,
        data: JSON.stringify(params),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (data) {
            alert(data.success);
            $('#target').html(data);
        },
        error: function () {
            alert("error");
        }
    });
}
我的控制器

   [System.Web.Http.HttpPost]
    public ActionResult Index([FromBody] Mymodel data)
    {
        return Json(new { success = true });

    }
我也试过用绳子

这是我的模型

  public class Mymodel
{
    public string name { get; set; }
    public string lastname { get; set; }
    public string phone { get; set; }
    public string type { get; set; }
    public string amounth { get; set; }
    public string quentity { get; set; }
}
我尽了全力,寻找了所有相同的问题,但对我来说没有任何效果。请帮助我可以看到请求负载中的数据,但无法将参数放入控制器

当您将对象(
params)
序列化为json时,mvc
ActionResult
参数模型(
Mymodel
)的结构和对象(
params)
需要是相同的结构,在您的代码中
params
Mymodel
是不同的结构。使其相同将解决问题

var params = {
            name: $('#name').val(),
            lastname: $('#lastname').val(),
            phone: $('#phone').val(),
            type: $('#type').val(),
            amounth: $('#amounth').val(),
            quentity: $('#quentity').val()
       };
当您将对象(
params)
序列化为json时,mvc
ActionResult
parameter模型(
Mymodel
)的结构和对象(
params)
需要是相同的结构,在您的代码
params
Mymodel
中是不同的结构。使其相同将解决问题

var params = {
            name: $('#name').val(),
            lastname: $('#lastname').val(),
            phone: $('#phone').val(),
            type: $('#type').val(),
            amounth: $('#amounth').val(),
            quentity: $('#quentity').val()
       };

JSON.stringify不是必需的
data:params.DonationInfo
JSON.stringify不是必需的
data:params.DonationInfo
使用以下方法:

var params = {
        name: $('#name').val(),
        lastname: $('#lastname').val(),
        phone: $('#phone').val(),
        type: $('#type').val(),
        amounth: $('#amounth').val(),
        quentity: $('#quentity').val()
    }
对于复杂的对象,使用变量比将其包含在ajax方法中要好

使用以下方法:

var params = {
        name: $('#name').val(),
        lastname: $('#lastname').val(),
        phone: $('#phone').val(),
        type: $('#type').val(),
        amounth: $('#amounth').val(),
        quentity: $('#quentity').val()
    }
function gonder() {
    var data= {

            name: $('#name').val(),
            lastname: $('#lastname').val(),
            phone: $('#phone').val(),
            type: $('#type').val(),
            amounth: $('#amounth').val(),
            quentity: $('#quentity').val()

    };
    $.ajax({
        url: '@Url.Action("Index", "Benafactor")',
        type: 'POST',
        async: true,
        data: JSON.stringify(params),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (data) {
            alert(data.success);
            $('#target').html(data);
        },
        error: function () {
            alert("error");
        }
    });
}
对于复杂的对象,使用变量比在ajax方法中包含变量要好

function gonder() {
    var data= {

            name: $('#name').val(),
            lastname: $('#lastname').val(),
            phone: $('#phone').val(),
            type: $('#type').val(),
            amounth: $('#amounth').val(),
            quentity: $('#quentity').val()

    };
    $.ajax({
        url: '@Url.Action("Index", "Benafactor")',
        type: 'POST',
        async: true,
        data: JSON.stringify(params),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (data) {
            alert(data.success);
            $('#target').html(data);
        },
        error: function () {
            alert("error");
        }
    });
}
您的控制器将如下所示

[HttpPost]
    public ActionResult Index(Mymodel data)
    {
        return Json(new { success = true });

    }
您的控制器将如下所示

[HttpPost]
    public ActionResult Index(Mymodel data)
    {
        return Json(new { success = true });

    }

使用jquery post检查此链接比答案更容易,删除
contentType
选项并使用
数据:$('form').serialize(),
(.serialize()`将表单控件正确序列化为json)使用jquery post检查此链接比答案更容易,删除
contentType
选项并使用
数据:$('form')).serialize(),
(.serialize()`正确地将表单控件序列化为json)我将等待8分钟。下面给出了更好的解决方案。您很好,编码愉快:)我认为,为了增加影响,最好解释一下是什么错了,与其只是给出答案,不如等8分钟。下面给出了更好的解决方案。你很好,快乐编码:)我认为,为了增加影响,解释一下错误,而不仅仅是给出答案是有益的。