返工删除功能以更改数据库值 ASP.Net

Posted

技术标签:

【中文标题】返工删除功能以更改数据库值 ASP.Net【英文标题】:Rework Delete Function to Change Databse Value ASP.Net 【发布时间】:2021-10-15 02:51:50 【问题描述】:

我正在使用 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 【参考方案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?)

【讨论】:

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

以上是关于返工删除功能以更改数据库值 ASP.Net的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 asp.net 身份以从​​数据库中获取对声明的更改?

ASP.NET Identity - 更改代码首先生成的数据库字段长度以提高性能

ASP.NET MVC - 输入值更改更新 URL 参数

ASP.NET Razor HTML - 根据值更改表格行的背景颜色

ASP.NET Core

如何在 Asp.Net MVC5 中使用 Ajax 将数据库更改保存到拖放列表