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>
あなたが不足しているdb.SaveChanges db.Posts.Add後db.SaveChangesを呼び出す必要があります – hdrdiab