我有一个Java脚本函数,我想让它将数据传递给我的控制器.

这是我的JavaScript代码:

    $.ajax({
        type: "POST",
        url: "/Home/CreateUser",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify({name: 'Dylan', email: 'an@email.com', password: 'password'}),
        success: function (response) {
            window.location.href = 'dashboard';
        },
        error: function (error) {
            alert('Error while signing up: ' + error);
        }
        })

..下面是我如何设置我的控制器以接收请求的:

    [HttpPost]
    public ActionResult CreateUser(string name, string email, string password)
    {
        Console.WriteLine("Data received successfully: Name - " + name + ", Email - " + email + ", Password - " + password);
        return Content("Data received successfully: Name - " + name + ", Email - " + email + ", Password - " + password);
    }

目前,每个值都作为null传递,我不明白为什么这不起作用.浏览器网络选项卡中的请求似乎正在发送Json,因此我认为我的控制器设置方式有问题.我试着设置了一个类并接受了它,但仍然不起作用.

谢谢, 迪伦

推荐答案

使用以下选项之一:

#1-指定[FromBody]

public ActionResult CreateUser([FromBody]string name, [FromBody]string email, [FromBody]string password)

#2-在您的控制器上使用[ApiController]属性

#3 -为您的有效载荷创建模型

public class RequestModel
{
    public string Name { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
}

那就用它吧

public ActionResult CreateUser([FromBody]RequestModel request)
{
   Console.WriteLine($"Data received successfully: Name - {request.Name}, Email - {request.Email}, Password - {request.Password});
   ..
}

有关模型绑定的更多信息,请参见here

Javascript相关问答推荐

如何使用JavaScript用等效的功能性HTML替换标记URL格式?

有什么(最佳)方法可以从模块中获取脚本模块的多姆元素吗?

使用复选框在d3.js多折线图中添加或删除线条

. NET中Unix时间转换为日期时间的奇怪行为

D3 Scale在v6中工作,但在v7中不工作

如何为我的astro页面中的相同组件自动创建不同的内容?

处理时间和字符串时MySQL表中显示的日期无效

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

如何在输入元素中附加一个属性为checkbox?

在执行异步导入之前判断模块是否已导入()

在数组中查找重叠对象并仅返回那些重叠对象

面对代码中的错误作为前端与后端的集成

如何在HTMX提示符中设置默认值?

react -原生向量-图标笔划宽度

如果对象中的字段等于某个值,则从数组列表中删除对象

如果我的列有条件,我如何呈现图标?

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

当达到高度限制时,如何裁剪图像?使用html和css

如何在css中裁剪成一定Angular 的圆的一部分,而不需要复杂的多边形

:host::ng-Deep不将样式应用于material 复选框