C# 如何使用C通过Ajax发布JSON数据#

C# 如何使用C通过Ajax发布JSON数据#,c#,.net,json,ajax,post,C#,.net,Json,Ajax,Post,大家好,我正在尝试将JSON发布到一个API中,我可以使用AJAX和cURL来实现这个API C#.net应用程序中的代码可以处理cURL代码并将其写入SQL: curl "http://localhost:38194/API/inbound" --data "FirstName=test4&LastName=test&Email=donot@mail.com" 但是,当我尝试从C#发帖时,我会: 它以request={FirstName=“Tom”,LastName=“buc

大家好,我正在尝试将JSON发布到一个API中,我可以使用AJAX和cURL来实现这个API

C#.net应用程序中的代码可以处理cURL代码并将其写入SQL:

curl "http://localhost:38194/API/inbound" --data "FirstName=test4&LastName=test&Email=donot@mail.com"
但是,当我尝试从C#发帖时,我会:

它以
request={FirstName=“Tom”,LastName=“buck”,Email=”的形式发送数据sdjsa@kjsdfhs.com“}
我认为我的控制器无法使用以下方法处理此问题:

public string Post([FromBody] FormDataCollection formValues)   
我已经搜索了几个小时,怀疑我发送帖子的格式与我的API控制器
FormDataCollection
不兼容。我必须承认,我对这些东西没有很好的理解,并通过反复试验学到了更多。可能不太优雅,但这是我使用cURL的API控制器代码

public string Post([FromBody] FormDataCollection formValues)
{
    string first_name = null, last_name = null, email = null;

    string connStr = ConfigurationManager.ConnectionStrings["inboundapplicant"].ConnectionString;
    using (SqlConnection connection = new SqlConnection(connStr))
    {
        using (SqlCommand command = new SqlCommand())
        {

            if (!string.IsNullOrWhiteSpace(formValues.Get("FirstName")))
            {
                first_name = formValues.Get("FirstName");
            }
            if (!string.IsNullOrWhiteSpace(formValues.Get("LastName")))
            {
                last_name = formValues.Get("LastName");
            }
            if (!string.IsNullOrWhiteSpace(formValues.Get("Email")))
            {
                email = formValues.Get("Email");
            }

            command.Connection = connection;
            command.CommandType = CommandType.Text;
            command.CommandText = "INSERT into [dbo].[Leads] (FirstName, LastName, Email) VALUES (@first_name, @last_name, @email)";

            command.Parameters.AddWithValue("@first_name", first_name == null ? (object)DBNull.Value : first_name);
            command.Parameters.AddWithValue("@last_name", last_name == null ? (object)DBNull.Value : last_name);
            command.Parameters.AddWithValue("@email", email == null ? (object)DBNull.Value : email);


            try
            {
                connection.Open();
                int recordsAffected = command.ExecuteNonQuery();
            }
            catch (SqlException)
            {
                throw;
            }
            finally
            {
                connection.Close();
            }
        }
    }

    return "success";
}

因为当您试图以FormData的形式访问json时,您将json作为请求负载传递。无需使用[FromBody]

public string Post(FormDataCollection formValues)

您不应该使用[FormBody]和FormDataCollection。您应该使用Firstname Lastname和Email作为属性创建一个模型

然后,您的方法如下所示:

public string Post(PersonInformation personInformation)
应该给你一些答案。。。
public string Post(PersonInformation personInformation)