将新的相关对象添加到数据库

时间:2017-06-28 12:36:14

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

我正在写博客。通过该博客,我可以发送消息,人们可以对这些消息做出反应。为实现这一点,我制作了两个模型,消息和评论。消息可以有多个注释,因此它们具有一对多的关系。现在我正在尝试为消息添加新评论,但我没有让它发挥作用。

当我添加一条消息时,它会从我的try catch语句中的catch中返回我的视图。

我已将其跟踪到我试图将值绑定到我的注释模型中的foreignkey messagesId的部分。 我这样做是因为我想将我的评论分配给一条消息。

以下是我的模特

namespace Portfolio.Models
{
    public class Messages
    {
        public int MessagesId { get; set; }
        [Required]
        public string Title { get; set; }
        [Required]
        public string Body { get; set; }
        public DateTime WhenCreated { get; set; }

        public virtual ICollection<Comments> Comments { get; set; }

        public Messages()
        {
            WhenCreated = DateTime.Now;
        }
    }
}

namespace Portfolio.Models
{
    public class Comments
    {
        public int CommentsId { get; set; }
        public string Comments_body { get; set; }
        public DateTime WhenCreated { get; set; }
        public int ComToMes { get; set; }

        public virtual Messages Messages { get; set; }

        public Comments()
        {
            WhenCreated = DateTime.Now;
        }
    }
}

这是我的控制器

    [ValidateInput(false)]
    [HttpPost]
    public ActionResult CreateComments(FormCollection formValues)
    {

        try
        {
            Comments comment = new Comments();
            comment.Comments_body = formValues["editor"];
            var currentMessage 
            =_context.messages.Find(Int32.Parse(formValues["IdName"]));
            comment.Messages.MessagesId = currentMessage.MessagesId;

            _context.comments.Add(comment);
            _context.SaveChanges();
        }   
        catch
        {
            return View();
        }
        return RedirectToAction("Blog");
    }

这是我的观点

    @*The form to post comments*@
    @using (Html.BeginForm("CreateComments", "Messages"))
    {
       <div class="form-group">
           <label>Comment</label>
           @Html.TextArea("editor", htmlAttributes: new { name = "editor1", 
           id = "editor", rows = "10", cols = "180" }                                       
           @Html.Hidden("IdName",messages.MessagesId)
       </div>
       <button type="submit" class="btn btn-primary" id="PostButton">Post 
       Comment</button>
     }

1 个答案:

答案 0 :(得分:0)

在Comments类中,您需要以下属性:

Public int MessagesId {get;组; }