【发布时间】: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方法不返回任何数据.
标签: c# postgresql asp.net-core-webapi webapi rest