【发布时间】:2021-01-25 11:58:56
【问题描述】:
我正在 RazorPage 中为我的项目模型进行简单的编辑操作。我可以读取数据并编辑模型中的数据,但无法将其保存回数据库。
好像公共绑定的 Project 变量突然不再链接到数据库上下文。在 OnPost() 中,绑定的 Project 变量似乎与 await _context.Project.FirstAsync(p => p.Id == project.Id); 中的变量不一样了?
代码:
public class EditProjectModel : PageModel
{
[BindProperty]
public Project Project { get; set; }
...
private async Task SaveProjectChanges(Project project) // How to save this parameter back into the database?
{
Project dbProject = await _context.Project.FirstAsync(p => p.Id == project.Id);
// How to save the changes from project?
// I don't want to assign each property manually like so: dbProject.Name = project.Name
// dbProject = project; // Erm yeah... This is obviously pointless unless I can use a pointer or something... But there's got to be a better way.
await _context.SaveChangesAsync();
}
public async Task<IActionResult> OnPost()
{
if (Project.Id > 0)
{
await SaveProjectChanges(Project);
}
else
{
await AddNewProject(Project);
}
return RedirectToPage(<snip>);
}
如果重要,请从视图中截取:
<tr>
<td>Id</td>
<td>@Model.Project.Id<input type="hidden" name="Project.Id" value="@(Model.Project.Id)" /></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" name="Project.Name" value="@(Model.Project.Name)" /></td>
</tr>
...
<input type="submit" value="Save" class="btn btn-default" />
【问题讨论】:
标签: c# asp.net-core .net-core entity-framework-core razor-pages