2016-11-25 17 views
0

初めてEFを使用しています。私はこれ以上私の頭を叩いていました。私のデータベースに挿入することができません

基本的には、ビューの送信フォームとコントローラの作成メソッドを使用して、レコードをデータベースに追加しようとしています。

だから基本的に、私は非常に基本的なモデルを持っているとCreate方法ここで

とコントローラがコードです:DbContext

モデル:

using System.Data.Entity; 

namespace class_project.Models 
{ 
    public class Post 
    { 
     public int PostId { get; set; } 
     [Required(ErrorMessage = "no!")] 
     public string Title { get; set; } 
     [Required(ErrorMessage = "no!")] 
     public string Content { get; set; } 

     public Post(int PostId, string Title, string Content) 
     { 
      this.PostId = PostId; 
      this.Title = Title; 
      this.Content = Content; 
     } 

     public Post() 
     { } 

     public class PostContext : DbContext 
     { 
      public DbSet<Post> Posts { get; set; } 
     } 
    } 
} 

はコントローラー:

using static class_project.Models.Post; // I AM NOT SURE ABOUT THIS PART, BUT IT WAS ABLE TO BUILD WHEN ADDED IT. 

namespace class_project.Controllers 
{ 
    public class PostsController : Controller 
    { 
     private PostContext db = new PostContext(); 

     public ActionResult Create(Post obj) 
     { 
      if (!ModelState.IsValid) 
      { 
       return View(obj); 
      } 

      db.Posts.Add(obj); 

      return RedirectToAction("Index", "Posts"); 
     } 
    } 
} 

と私のViewは、モデルに基づいて2つの入力フィールド(idがdbから生成されたものと仮定)を持つ標準自動生成Createです。

@model class_project.Models.Post 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Post</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Content, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Content, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Content, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 
+2

あなたが不足しているdb.SaveChanges db.Posts.Add後db.SaveChangesを呼び出す必要があります – hdrdiab

答えて

関連する問題