从视图到控制器的 Ajax 请求正文在 ASP NET Core MVC 3

问题描述

我有一个场景,我想在 ASP NET Core MVC 3 中从视图到控制器进行 ajax 调用。然后控制器应该返回部分视图作为响应。主要问题是,当数据通过 ajax post 请求传递给控制器​​时,控制器发现数据为空。我已经搜索了很多关于这个主题的在线内容,但没有一个解决方案适合我。

这是我的控制器方法

[HttpPost]
public PartialViewResult AddUserForm(string firstName,string lastName) 
{
    // some stuff happens then
    return PartialView();
}

查看我的 Ajax 发布方法

<script>
    function replaceContentsOfDiv() {
        var f = $('#fName').val();
        var l = $('#lName').val();

        $.ajax({
            url: '@Url.Action("AddUserForm","Reservation")',contentType: 'application/json',data: JSON.stringify({ firstName: this.f,lastName: this.l }),type: "POST",success: function(data) {
                $('#placeHolderDiv').html(data);
            },error: function() {
                alert("something is wrong");
            }
        });
    }
</script>

来自这个 js 脚本的数据(var fvar l 具有有效值。但是,如果我想在控制器方法中注销 string firstNamestring lastName,它们是都为空。这可以用 I.e. logger.Loginformation((firstName == null).ToString()).

进行测试

有谁知道我做错了什么,以至于传入控制器的数据为空?我什至尝试向 [FromBody] 参数添加 AddUserForm 注释,但也没有成功。

编辑:修复了我的 JS 脚本中的一些错字。

解决方法

你只需要像下面这样改变你的ajax:

$.ajax({
        url: '@Url.Action("AddUserForm","Reservation")',data: {
                 firstname: f,lastname: l
                },type: "POST",success: function(data) {
            $('#placeHolderDiv').html(data);
        },error: function() {
            alert("something is wrong");
        }
    });
,

然后我找到了解决方案。问题是如何调用请求。然后我就使用了这样的常规 jQuery post 方法:

<script>
    function replaceContentsOfDiv() {
        let data = {
            firstName: document.getElementById("fName").value,lastName: document.getElementById("lName").value
        }
        console.log(data);
        $.post('@Url.Action("AddUserForm",data,function (data) {
            $('#placeHolderDiv').html(data);
        });
    };
</script>