空白剃须刀页面,检查评论中是不是存在文章编号

Posted

技术标签:

【中文标题】空白剃须刀页面,检查评论中是不是存在文章编号【英文标题】:Empty razor page, check if article number exists in cmment空白剃须刀页面,检查评论中是否存在文章编号 【发布时间】:2021-12-24 19:54:01 【问题描述】:

所以我有一个可以更新评论的地方,我已经知道如何在评论不存在时显示一条消息,但是当我输入一个不存在的 articleNumber 时它会崩溃 (articleNumber不能为空)

剃须刀页面后面的代码:

 public class UpdateCommentModel : PageModel
    
        [BindProperty]
        public CommentClass comment  get; set; 
        [BindProperty]
        public int articleNumber  get; set; 

        public void OnGet()
        
        
        public IActionResult OnPost()
        
            if (ModelState.IsValid)
            
                UserManager findUser = new UserManager();
                comment.user = findUser.FindUser(Convert.ToInt32(HttpContext.Session.GetString("username")));

                NewsArticleManager FindArticleNumber = new NewsArticleManager();
                comment.article = FindArticleNumber.FindNewsArticle(articleNumber);

                CommentManager updateToCommentDatabase = new CommentManager();
                bool succeeded = updateToCommentDatabase.UpdateComment(comment);
                if (succeeded)
                
                    string message = "The tip article has been deleted!";
                    ViewData["Message"] = message;
                
                else
                
                    string message = "This article does not exist";
                    ViewData["Message"] = message;
                
                return Page();
            
            else
            
                ViewData["Message"] = "Please enter all data fields";
                return Page();
            
        

数据库代码:

 public bool UpdateDb(CommentClass comment)
        

            using (mysqlConnection connection = new MySqlConnection(databaseConnection))
            
                //SQL command to insert the news article into the database
                string sql = "UPDATE comment SET CommentId = @CommentId, ArticleId = @ArticleId, UserId = @UserId, CommentText = @CommentText WHERE CommentId = @CommentId AND ArticleId = ArticleId";

                MySqlCommand command = new MySqlCommand(sql, connection);
                command.Parameters.AddWithValue("@CommentId", comment.CommentId);
                command.Parameters.AddWithValue("@ArticleId", comment.article.ArticleNumber);
                command.Parameters.AddWithValue("@UserId", comment.user.UserId);
                command.Parameters.AddWithValue("@CommentText", comment.CommentText);

                connection.Open();
                int amount = command.ExecuteNonQuery();
                return amount > 0;
            
        

经理代码:

//Delete article
        public bool DeleteComment(int commentId)
        
            FillCommentList();
            return commentDB.DeleteDb(commentId);
        

有人知道如何解决这个问题吗?

【问题讨论】:

除此之外,我建议您在构造函数中注入 UserManager、NewsArticleManager 和 CommentManager,这样您就不需要新建它们了。确保你有接口。私有只读 IUserManager _userManager;公共 UpdateCommentModel(IUserManager userManager) _userManager = userManager;更多信息请参见:learnrazorpages.com/advanced/dependency-injection 【参考方案1】:

在不知道你的标记是什么样子的情况下,我建议:

if (articleNumber == 0)

    ModelState.AddError("articleNumber", "Article Number should be greater than zero");

【讨论】:

这不起作用

以上是关于空白剃须刀页面,检查评论中是不是存在文章编号的主要内容,如果未能解决你的问题,请参考以下文章

仅当 cookie 存在时,如何在剃须刀页面中添加 HTML?

我是不是必须在每个剃须刀页面模型中调用数据库?

剃须刀页面如何显示图片?

剃刀页面是不是位于 mvc 层之上?

我如何检查 javascript 中的用户角色(没有剃须刀或控制器)

或第三方网站分享转发后,打开提示 “无法打开该页面,不支持打开” 或 “页面不存在”(IOS 苹果系统打开是空白页,安卓系统会有提示)超详细排查