更新MVC中的特定列数

时间:2014-04-06 10:15:29

标签: asp.net-mvc asp.net-mvc-4

我有一个编辑操作来编辑我的评论模型:

public partial class Comment
    {
        [DisplayName("شناسه نظر")]
        public int Id { get; set; }
        [Required(ErrorMessage = "متن نظر را وارد کنید")]
        [DisplayName("متن نظر")]
        public string CommentText { get; set; }
        [DisplayName("تعداد پسندیدن ")]
        public long LikeCount { get; set; }
        [DisplayName("تعداد نپسندیدن")]
        public long DisLikeCount { get; set; }
        [DisplayName("تاریخ انتشار ")]
        public System.DateTime PublishDate { get; set; }
        [DisplayName("وضعیت نمایش ")]
        public string Visible { get; set; }
        [DisplayName("نام کاربری ")]
        public string AutherUserName { get; set; }
        [DisplayName("شناسه نظراصلی")]
        public Nullable<int> CommentFKId { get; set; }
        [DisplayName("شناسه کاربر")]
        public Nullable<int> StudentId { get; set; }
        [DisplayName("شناسه محتوا ")]
        public Nullable<int> ContentId { get; set; }

   public virtual ICollection<Comment> Comments { get; set; }
        public virtual Comment Comment1 { get; set; }
        public virtual Student Student { get; set; }
        public virtual Content Content { get; set; }
    }

我的模型中有很多列但是在编辑操作中我只需要编辑其中的一些列。

所以我的Postback编辑操作是这样的:

   [HttpPost]
        public ActionResult Edit(Comment comment, FormCollection form)
        {
            //comment.AutherUserName = "admin";
            //comment.LikeCount = 0;

            if (ModelState.IsValid)
            {
                TryUpdateModel(comment, new string[] {"CommentText", "Visible"});
                obj.Update(comment);
                obj.Save();
            }

          return RedirectToAction("Index", "Comment", new { contentID = form["ContentId"].ToString() });
        }

因为你可以看到我想要更新 commentText 可见。但是这段代码并没有更新我的模型。它不会返回任何错误

以下是更新方法:

  public void Update(Comment comment)
        {
            _dbcontext.Entry(comment).State = EntityState.Modified;
        }

我的保存功能:

 public void Save()
        {
            _dbcontext.SaveChanges();

        }

祝你好运

2 个答案:

答案 0 :(得分:1)

这样做:

public void Update(Comment comment)
        {
            _dbcontext.Entry(comment).State = EntityState.Modified;
            _dbContext.SaveChanges();
        }

您正在更新对象,但不保存它以反映数据库中的对象更改。

答案 1 :(得分:0)

最后我做了这个方法:

[HttpPost]
        public ActionResult Edit(Comment comment, FormCollection form)
        {

            Comment temp = obj.FindCommentsById(comment.Id);
            temp.CommentText = comment.CommentText;
            temp.Visible = comment.Visible;
            if (ModelState.IsValid)
            {
                //TryUpdateModel(comment, new string[] {"CommentText", "Visible"});
                obj.Update(temp);
                obj.Save();
            }

          return RedirectToAction("Index", "Comment", new { contentID = form["ContentId"].ToString() });
        }

首先我编辑我想要的列,然后将记录的ID传递给 FindCommentsById ,并将返回的实体的值更改为新的。