首页 > 解决方案 > 如何将课程传递给服务器

问题描述

将单个整数参数从我的客户端传递到服务器上的 API 是可行的。

 [HttpPost]
 public JsonResult GetNextClients(int? clientID)

但是通过一堂课不会。

此处定义的类:

public class ClientParameters
{
    public int ClientID;
    public int FamilyID; 
    public bool IncludeFirstName;
    public bool IncludeLastName;
    public bool ExactDate;
}

方法:

[HttpPost]
public JsonResult GetClients(ClientParameters param)

我发送的数据如下所示:

    return {
        "ClientID": 5,
        "FamilyID": 12,
        "IncludeFirstName": true,
        "IncludeLastName": true,
        "ExactDate": true
    };

从 Fiddler 运行它会命中我的方法,我得到了类,但它都是默认值。

我尝试了 JSON.Stringify 并从客户端和 Fiddler 发送

 "{\"ClientID\":5,\"FamilyID\":0,\"IncludeFirstName\":true,\"IncludeLastName\":true,\"ExactDate\":true}"     

我尝试添加

dataType: "json"
contentType: "application/json; charset=utf-8"

仍然获得默认值。

标准路由:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

标签: asp.netajaxfiddler

解决方案


以下是 .NET Core 3.1 中的 C# API 示例。代码在控制器中,它是具有服务层的存储库模式的一部分,全部使用依赖注入。

[HttpPost]
public virtual ActionResult<T> Create([FromBody] T data)
{
  try
  {
    return Ok(_service.Create(data));
  }
  catch (Exception e)
  {
    return BadRequest(e.Message);
  }
}

请注意,您需要[FromBody]在您的 post 请求参数

查看以下链接的“发送 POST 请求”部分,以确保您的 AJAX 格式正确。 发送 POST 请求


推荐阅读