我是ASP.NET MVC Core Web API和EF Core的新手,我正在创建一个简单的MVC Web API演示,如下所示。
[HttpPut("{id}")]
public async void Put(int id, [FromBody]Student student)
{
if (ModelState.IsValid)
{
var stu = _context.Students
.Where(s => s.StudentId == id)
.SingleOrDefault();
var updateResult = await TryUpdateModelAsync<Student>(stu, "", s => s.FirstName, s => s.LastName, s => s.EnrollmentDate);
_context.SaveChanges();
}
}
问题是TryUpdateModelAsync
不起作用,更改没有更新到数据库。
我想知道:
TryUpdateModelAsync
可以在MVC Web API中使用?TryUpdateModelAsync
的第一个原因)
stu.FirstName = student.FirstName;
stu.LastName = student.LastName;
stu.SomeOtherProperties = student.SomeOtherProperties;
_context.SaveChanges();
.NET核心版本:1.1.0
ASP.Net核心版本:1.1.0
实体框架核心版本:1.1.0
尝试从您的身体传递学生实例,而不是您查找的那个。
public async void Put(int id, [FromBody]Student student)
{
if (ModelState.IsValid)
{
student.StudentId = id; // If the ID isn't passed in or you could validate that it matches the id passed in
var updateResult = await TryUpdateModelAsync<Student>(student, "", s => s.FirstName, s => s.LastName, s => s.EnrollmentDate);
_context.SaveChanges();
}
}
FromBody使用格式化程序将请求主体反序列化为JSON对象。
TryUpdateModelAsync依赖于模型绑定并使用值提供程序来获取数据。
您可以将发布的数据更改为使用模型绑定的表单帖子。