需要一些帮助来构建 asp.net 核心 webapi 中的 [HttpPost] 部分
Posted
技术标签:
【中文标题】需要一些帮助来构建 asp.net 核心 webapi 中的 [HttpPost] 部分【英文标题】:Need some help to build [HttpPost] section in asp.net core webapi 【发布时间】:2021-06-25 18:24:41 【问题描述】:我正在学习如何创建 webapi,我需要一些帮助。我在构建后控制器时遇到问题!我无法使其直接在我创建的将值添加到数据库的方法中工作。我在搜索的内容、文档等方面找不到任何帮助...有什么建议吗?
类模型:
public class TbStudents
public int StuId get; set;
public string StuName get; set;
public string StuDegree get; set;
类方法:
发帖
public class MethodStudents
//GET Method
public async Task<List<TbStudents>> GetReadStudents()
List<TbStudents> list = new List<TbStudents>();
using (NpgsqlConnection myConn = new NpgsqlConnection(Conns.ConnStudents))
string sql = "SELECT * FROM students ORDER BY stu_name";
NpgsqlCommand myQuery = new NpgsqlCommand(sql, myConn);
myConn.Open();
NpgsqlDataReader myReader = await myQuery.ExecuteReaderAsync();
while (myReader.Read())
TbStudents data = new TbStudents
StuId = int.Parse(myReader["stu_id"].ToString()),
StuName = myReader["stu_name"].ToString(),
StuDegree = myReader["stu_degree"].ToString(),
;
list.Add(data);
myConn.Dispose();
return list;
//POST Method
public async Task addStudent(TbStudents student)
using(NpgsqlConnection myConn = new NpgsqlConnection(Conns.ConnStudents))
string sql = "INSERT INTO students (stu_name, stu_degree)" +
"VALUES (@name, @degree)";
NpgsqlCommand myQuery = new NpgsqlCommand(sql, myConn);
myQuery.Parameters.AddWithValue("@name", students.StuName);
myQuery.Parameters.AddWithValue("@degree", students.StuDegree);
myConn.Open();
await myQuery.ExecuteNonQueryAsync();
myConn.Dispose();
类控制器:
[Route("api/[controller]")]
[ApiController]
public class StudentsController : ControllerBase
MethodStudents methodStudents = new methodStudents();
// GET: api/students
[HttpGet]
public async Task<ActionResult<List<TbStudents>>> GetStudents()
var list = methodStudents.GetReadStudents();
return await list;
//Post: api/students
[HttpPost]
public async Task<ActionResult<TbStudents>> PostStudents()
var postStu = methodStudents.AddStudents();
return await postStu;
控制器 [HttpPost] 出现了一些错误...
上线:var postStu = methodStudents.AddStudents();
错误 CS7036 没有给出与“MethodStudents.AddStudent(TbStudents)”所需的形参“student”相对应的参数
上线:return await postStu;
错误 CS0029 无法将类型“void”隐式转换为“Microsoft.AspNetCore.Mvc.ActionResult
【问题讨论】:
你得到什么样的错误? 您好!控制器上的错误:.AddStudents“没有参数给出对应于'MethodStudents.AddStudents(TdStudents)'的所需形式参数'student'返回等待postStu;不能将类型'void'隐式转换为'microsoft.aspnetcore.mvc.action .结果...' 嗨@cshapoor,正如Gunnarhawk 所说,您需要将TbStudents 实例传递给AddStudents
方法。此外,您无法设置变量postStu
,因为AddStudents
方法不返回任何数据.
【参考方案1】:
当您在var postStu = AddStudent();
调用它时,您需要将一个值传递给AddStudent()
方法,因为您正在使用参数定义该方法。另外,我不确定这是否是一个错字,但在您的PostStudents()
方法中,您调用的是.AddStudents()
,您应该删除点'。'
【讨论】:
谢谢,我正在尝试这样做!抱歉,打错了,我编辑了帖子。以上是关于需要一些帮助来构建 asp.net 核心 webapi 中的 [HttpPost] 部分的主要内容,如果未能解决你的问题,请参考以下文章
用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API