首页 > 解决方案 > Asp.net 控制器收到空值

问题描述

我的 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 它适用于这里的每个字段

标签: javascriptasp.netajaxpost

解决方案


第一的; [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
});

推荐阅读