【问题标题】:Rework Delete Function to Change Databse Value ASP.Net返工删除功能以更改数据库值 ASP.Net
【发布时间】:2026-01-03 04:05:01
【问题描述】:

我正在使用 ASP.Net 并使用 EntityFramework 来创建我的控制器。在控制器中有通常的 Delete 和 DeleteConfirmed 操作。我不希望用户实际删除记录,但不介意他们认为他们删除了记录。我的目标是修改删除确认记录,将我的 RecordEntry 表的 IsValid 列更改为 0 或 false,这意味着该记录被标记为无效而不是被删除。

这是 DeleteConfirmed 的代码。尚未编辑。

        // POST: RecordEntry/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            var recordEntry = await _context.RecordEntry.FindAsync(id);
            _context.RecordEntry.Remove(recordEntry);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }

【问题讨论】:

  • 还有什么问题?是什么阻止您只编辑代码?
  • @Wiktor Zychla 我不知道怎么做。我知道我需要做 _context.RecordEntry.Update 而不是 .Remove 但我不知道还有什么
  • 通过 id 从数据库中读取记录,更新要更新的属性,保存回来。见:docs.microsoft.com/en-us/ef/core/saving/basic

标签: c# sql asp.net entity-framework


【解决方案1】:

当您选择条目然后更改它的值时,您已经可以简单地将更改保存到数据库。

// POST: RecordEntry/Delete/5 
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public async Task<IActionResult> DeleteConfirmed(int id) { 
    var recordEntry = await _context.RecordEntry.FindAsync(id); // get entry
    recordEntry.IsValid = false; // Edit entry
    await _context.SaveChangesAsync(); // Save changes to db
    return RedirectToAction(nameof(Index)); // Return response
}

如果您想了解更多,请参考这里 (How to update record using Entity Framework 6?)

【讨论】:

  • 那是完美的。谢谢!
  • 没问题,我很乐意提供帮助!