Empty Razor Page中如何校验待删除tip article的ID是否存在?
问题修复方案
你的DeleteDb方法本身逻辑是正确的,执行DELETE语句后ExecuteNonQuery()会返回实际被删除的行数,当传入不存在的ID时返回值为0,方法会返回false。目前的问题是上层Razor页面的业务逻辑没有接收这个返回值,无论删除结果如何都直接输出成功提示,只要调整这部分逻辑即可:
具体修改步骤
修改DeleteTipArticleModel类的OnPost方法,接收删除操作的返回结果,根据结果设置对应提示:
[Authorize(Roles = "admin")] public class DeleteTipArticleModel : PageModel { [BindProperty] public int articleNumber { get; set; } public void OnGet() { } public IActionResult OnPost() { if (ModelState.IsValid) { TipArticleManager deleteToTipArticleDatabase = new TipArticleManager(); // 接收删除操作的返回值 bool isDeleteSuccess = deleteToTipArticleDatabase.DeleteTipArticle(articleNumber); if (isDeleteSuccess) { ViewData["Message"] = "Tip文章删除成功"; } else { ViewData["Message"] = "删除失败:不存在对应ID的Tip文章,请检查输入的ID是否正确"; } return Page(); } else { ViewData["Message"] = "请填写所有必填字段"; return Page(); } } }
可选优化建议
如果需要更精细的错误提示区分(比如区分「ID不存在」和「数据库操作异常」),可以将DeleteDb和DeleteTipArticle的返回值从布尔类型改为自定义枚举,分别对应删除成功、ID不存在、数据库异常三种状态,上层根据不同状态返回更精准的提示即可。
内容的提问来源于stack exchange,提问作者Jessy
相关产品推荐
相关产品推荐

