【问题标题】:mvc post method not workingmvc post方法不起作用
【发布时间】:2016-07-10 13:39:38
【问题描述】:

我正在努力解决一个问题,但我找不到任何解决方法。

这是我的班级学生:

public class Student
{
    public int ID { get; set; }
    public string Nume { get; set; }
    public string Prenume { get; set; }
    public int Nota { get; set; }
    public bool Status { get; set; }
}

这是来自控制器的 post 方法:

[HttpPost]
public IHttpActionResult Post([FromBody] Student student)
{
    if (student == null) return BadRequest();
    studenti.Add(student);
    return CreatedAtRoute("StudentApi", new { ID = student.ID }, student);
}

我尝试过发送 JSON 格式:

{ "ID": 6, "Nume": "Test", "Prenume": "TestP", "Nota": 10, "Status": true } 

并返回它......每次我得到 null 并且没有元素被添加到列表中......

【问题讨论】:

  • 请阅读stackoverflow.com/editing-help 以了解如何正确格式化代码...然后提供有关如何您发布 JSON 的更多详细信息
  • 我使用 Postman 发布它,Content-Type: application/json 并发送上述模型。 { "ID": 6, "Nume": "Test", "Prenume": "TestP", "Nota": 10, "Status": true }
  • 检查调试点你能打这个方法吗?如果没有检查你的路由配置。
  • 所以请将这些信息放入问题中...
  • 遇到断点时学生是否为空?我刚刚通过创建一个新的 web api 项目对此进行了测试,它可以正常工作

标签: c# .net asp.net-mvc


【解决方案1】:

很难说问题出在哪里,因为您没有向我们展示如何调用 Post 操作,但假设您有一个名为 StudentController 的 Web api 控制器,如下所示:

public class StudentController : ApiController
{
    [HttpPost]
    public IHttpActionResult Post([FromBody] Student student)
    {
        if (student == null) return BadRequest();
        //studenti.Add(student);
        return CreatedAtRoute("StudentApi", new { ID = student.ID }, student);
    }
}

要使用 jQuery 将 Student 发布到 Post 操作,您可以这样做:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#btnAddStudent").click(function () {
            var student = {
                "ID": 6,
                "Nume": "Test",
                "Prenume": "TestP",
                "Nota": 10,
                "Status": true
            }
            $.ajax({
                type: "POST",
                url: "/api/Student",
                data: student,
                success: function (data) {
                    alert("New student created.");
                },
                error: function (error) {
                    alert("Called failed");
                }
            });
        });
    });
</script>
<input type="button" id="btnAddStudent" value="Add Student" />

【讨论】:

  • dataType: "json" 不仅不是必需的(我永远不会推荐它),而是用于响应,而不是请求。 Did you mean contentType?
  • 非常感谢,先生们!那么...使用 datatype 是否正确还是应该使用 contentType ?
  • 完全删除数据类型。我在我这边试过了,电话仍然有效。如果我的帖子对你有帮助,请记得标记为已回答
猜你喜欢
  • 2018-10-05
  • 2023-04-04
  • 1970-01-01
  • 2018-08-23
  • 2015-03-19
  • 2012-05-31
  • 2019-01-07
  • 2018-01-28
  • 2015-04-27
相关资源
最近更新 更多