以下是使用ASP.NET Core中的Razor Pages和EF Core进行数据更新的解决方法的示例代码:
@page
@model UpdateModel
Update Data
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
public class UpdateModel : PageModel
{
private readonly ApplicationDbContext _dbContext;
public UpdateModel(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
[BindProperty]
public DataModel Data { get; set; }
public async Task OnGetAsync(int id)
{
Data = await _dbContext.Data.FirstOrDefaultAsync(d => d.Id == id);
if (Data == null)
{
return NotFound();
}
return Page();
}
public async Task OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_dbContext.Attach(Data).State = EntityState.Modified;
try
{
await _dbContext.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!_dbContext.Data.Any(d => d.Id == Data.Id))
{
return NotFound();
}
throw;
}
return RedirectToPage("./Index");
}
}
public class DataModel
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int Age { get; set; }
}
请注意,上述示例中的Update.cshtml页面和Update.cshtml.cs文件应位于同一个文件夹中,以便Razor Pages正确识别它们。另外,需要根据实际情况修改数据库上下文类(ApplicationDbContext)以及数据模型(DataModel)的定义。