首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpPost方法in并不是通过使用Web进行POST操作来添加从ASP.NET MVC应用程序接收的数据( JSON文件)。

HttpPost方法in并不是通过使用Web进行POST操作来添加从ASP.NET MVC应用程序接收的数据( JSON文件)。
EN

Stack Overflow用户
提问于 2022-09-06 14:30:18
回答 1查看 46关注 0票数 1

JSON档案:

代码语言:javascript
复制
{
    "Students": [
{
  "id": 1,
  "name": "Ravi",
  "department": "IT"
},

{
  "id": 2,
  "name": "Raj",
  "department": "hr"
},
{
  "id": 3,
  "name": "avi",
  "department": "it"
}
]}

ASP.NET MVC模型类:

代码语言:javascript
复制
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
}

public class Root
{
    public List<Student> Students { get; set; }
}

ASP.NET MVC控制器用于接收来自jQuery POST请求的数据,并将该数据发送到jQuery:

代码语言:javascript
复制
public class StudentController : Controller
{
    HttpClientHandler _clientHandler = new HttpClientHandler();

    [HttpPost]
    public async Task<List<Student>> AddUser(Student _Students)
    {
        OStudents = new List<Student>();

        using (var httpclient = new HttpClient(_clientHandler))
        {
            StringContent content = new StringContent(JsonConvert.SerializeObject(_Students), Encoding.UTF8, "application/json");

            using (var response = await httpclient.PostAsync("https://localhost:7018/api/Students/AddUser", content))
            {
                string res = await response.Content.ReadAsStringAsync();
                OStudents = JsonConvert.DeserializeObject<List<Student>>(res);
            }
        }

        return OStudents;
    }
}

jQuery代码:用于向AddUser函数发送数据:

代码语言:javascript
复制
function AddStudent() {
    oStudent = {
    id: $("#st-Id").val(),
    name: $("#st-Name").val(),
    department: $("#st-Department").val()
};

$.post("/Student/AddUser", oStudent);
$.ajax({
    url: "/Student/AddUser",
    type: 'POST',
    data: oStudent,
    contentType: 'application/json',
    dataType: 'json',
    success: function (msg) {
        alert(msg);
    }
});

Web文件:

课程:

代码语言:javascript
复制
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
}
   
public class Students
{
    public List<Student> students { get; set; }
}   

ApiController,用于将从ASP.NET MVC应用程序接收的数据添加到JSON文件中

代码语言:javascript
复制
    [HttpPost("AddUser")]
    public IActionResult AddUser(Students _Student)
    {
        var filePath = @"C:/Users/tanmay_pawar/source/repos/CRUDAPI/CRUDAPI/output.json";
        var json = System.IO.File.ReadAllText(filePath);

        Students students = JsonConvert.DeserializeObject<Students>(json);

        students.students.AddRange(_Student.students);

        json = JsonConvert.SerializeObject(students);
        System.IO.File.WriteAllText(filePath, json);

        return Ok();
    }

我在Web中的POST方法正在接收空值。

EN

回答 1

Stack Overflow用户

发布于 2022-09-06 17:58:33

oStudent不是JSON对象。它是一个普通的JavaScript对象。如果要以JSON的形式发送数据,则必须首先对其进行编码:

数据:{_Student: JSON.stringify(oStudent)}

可以在服务器端使用字符串类型参数接收此数据,然后反序列化对象。

代码语言:javascript
复制
[HttpPost("AddUser")]
public IActionResult AddUser(string _Student)
{
    List<Student> students = JsonConvert.DeserializeObject<List<Student>>(_Student);        

    return Ok();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73623733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档