ASP.NET Core Razor Pages 完成编辑页面
admin
2022-03-02ASP.NET Core Razor Pages 完成编辑页面
导航:
本章是第14部分的继续。 在此视频中,我们将讨论如何通过将 Razor Pages发回到服务器来更新服务器上的数据。
IStudentRepository服务接口
在IStudentRepository服务接口中,包括Update()方法。
注意,此方法返回Student对象。这是更新的学生。
在大多数实际应用程序中,通常会自动更新某些属性。例如,lastupdatetime
字段,对于此类属性,我们通常不从用户界面提供数据。它可以由Web服务器或数据库服务器自动计算。
通过返回更新的Student对象,我们将可以访问那些更新的属性。
namespace YoYoMooc.StudentManagement.Services
{
public interface IStudentRepository
{
IEnumerable<Student> GetAllStudents();
Student GetStudent(int id);
Student Update(Student updatedStudent);
}
}
MockStudentRepository 服务
包括以下内容更新()的方法MockStudentRepository服务。
public Student Update(Student updatedStudent)
{
Student student = _studentList
.FirstOrDefault(e => e.Id == updatedStudent.Id);
if (student != null)
{
student.Name = updatedStudent.Name;
student.Email = updatedStudent.Email;
student.Major = updatedStudent.Major;
}
return student;
}
Edit.cshtml.cs
- 在Edit.cshtml.cs中包含以下方法
- OnGet()处理GET请求,
- OnPost()处理POST请求
- ASP.NET Core中的模型绑定会自动将表单中Student的对象值映射到对应的方法参数上。
- 当不需要处理表单以外的属性值的时候,我们可以使用此OnPost()方法处理它们。
- 数据更新后,将请求重定向到“Index” Razor Pages,以便我们可以看到更新的更改。
public IActionResult OnPost(Student student)
{
Student = _studentRepository.Update(student);
return RedirectToPage("Index");
}
BindProperty属性
- 您还可以使用BindProperty属性实现相同的操作。
- 此属性自动将Post的表单值绑定到Student公共属性。
- 当你除了OnPost()以外的方法,也需要处理表单中的值时,也可以使用此方法。
[BindProperty]
public Student Student { get; set; }
public IActionResult OnPost()
{
Student = studentRepository.Update(Student);
return RedirectToPage("Index");
}