c# - 需要一些帮助来构建 asp.net 核心 webapi 中的 [HttpPost] 部分
问题描述
我正在学习如何创建 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。添加学生();
错误 CS7036 没有给出与“MethodStudents.AddStudent(TbStudents)”所需的形参“student”相对应的参数
上线:返回await postStu;
错误 CS0029 无法将类型“void”隐式转换为“Microsoft.AspNetCore.Mvc.ActionResult<TestApiStudents.Data.Models.TbStudents>”
解决方案
AddStudent()
当您调用它时,您需要将一个值传递给该方法,var postStu = AddStudent();
因为您正在使用参数定义该方法。另外,我不确定这是否是错字,但在您的PostStudents()
方法中,您正在调用.AddStudents()
,您应该删除点 '。
推荐阅读
- reactjs - 使用 redux-observable 执行 XHR 然后调度成功/失败
- ruby-on-rails - 更新:带有nested_fields 和多个has_one 的Rails 表单
- typescript - 从空数组访问对象属性时如何使 TypeScript 编译失败
- html - 将图像粘贴到侧面响应式引导程序
- python - 熊猫根据不同的值移动以计算百分比
- machine-learning - 数据采样技术和问题
- watir - 脚本在本地传递时 Jenkins 框中的“找不到元素”异常
- c# - 当两个并发更改发生时,为什么 RowVersion 属性不会引发乐观并发异常?
- html - 如何在轮播指示器之间放置两个箭头?
- android - 在android中使用kotlin将字符串化的json转换为jsonArray