【问题标题】:Asp.net controller recieving nullAsp.net 控制器接收空值
【发布时间】:2020-08-20 05:59:53
【问题描述】:

我的 ASP.net 控制器正在接收 null 而不是传入的参数:( js函数:

function SendFormToController() {
            var username = document.getElementById("UsernameField").value;
            var email = document.getElementById("EmailField").value;
            var password = document.getElementById("PasswordField").value;

            var SendJson = {
                Username: username,
                Email: email,
                Password: password
            };
            console.log(JSON.stringify(SendJson));
            $.ajax({
                type: "POST",
                data: JSON.stringify(SendJson),
                url: "Register/Register",
                contentType: "application/json"
            });
        }

当我用控制台记录数据时,数据就存在了。但在控制器中,我得到 - https://prnt.sc/u2mpa6 它适用于这里的每个领域

【问题讨论】:

    标签: javascript asp.net ajax post


    【解决方案1】:

    首先;您是否在控制器方法的顶部添加了 [HttpPost] 属性?

    第二;如果您以“查询字符串”格式提交:Username=xx&Password=yy&... 并使用 (HttpGet)。这行得通吗?

    如果您需要执行 POST(并且不想使用 GET),您可以使用所有当前参数创建一个对象并使用 [FromBody] 属性:

    [Route("Register")]
    [HttpPost]
    public ResultData Register([FromBody] RegisterRequest data) {
       //Your logic...
    }
    

    和客户端(JavaScript)端:

    let url = 'http://...';
    $.post(url, { Username: name, Password: pass, What: ever  }, function (result) {
        //Do some nice stuff
    })
    .fail(function (error) {
        //Oh no! Show error.statusText
    });
    

    【讨论】:

    • 没有。我还没有在控制器顶部添加 [HttpPost]。如果我以常规方式提交,那么是的。它接收一切
    • 添加的 [HttpPost] 仍然为空
    • 好的。更改为 [HttpGet] 并尝试通过 url 提交。例如:"Register/Register?username=xx&..." 并使用 $.getJSON() 左右。
    • 显然,如果我手动输入参数,它们会被控制器识别。但是如果我用 Ajax 来做,那就没有运气了。仍然收到 null 。不管是get还是post
    • 我已经更新了我的答案,希望对您有所帮助。如果是,请接受。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多