3

フォームに名前と年齢を入力し、ホーム コントローラーのListAllアクションに投稿するだけです。しかし、コントローラーは入力されたすべての名前と年齢を記憶しているわけではありません。

Ps 長いコードで申し訳ありませんが、それはすべて非常に基本的なものであり、物事を複雑にするべきではありません

これは私の Index.Html のコードです (人の名前と年齢を入力できます)

@using(Html.BeginForm())
{
    @Html.ValidationSummary();
    @Html.LabelFor(p=>p.Name)
    @Html.EditorFor(p=>p.Name)
    @Html.LabelFor(p=>p.Age)
    @Html.EditorFor(p=>p.Age)
    <input type="submit" value="Add" />
}
@Html.ActionLink("View All Person", "ListAll");

これは私の DBContext クラスです。

public class TheDB: DbContext
    {
        public List<Person> persons = new List<Person>();
    }

私の個人クラス

 public class Person
    {
        [Required]
        public string Name { get; set; }
        [Required]
        public string Age{get;set;}
    }

私のコントローラー

public class HomeController : Controller
    {

        TheDB myDB ;
        public HomeController()
        {
            myDB = new TheDB();
        }
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(Person person)
        {
            //ignore model validation for now
            myDB.persons.Add(person);
            myDB.SaveChanges(); //update: adding this didn't work either
            return View(person);

        }
        public ActionResult ListAll()
        {            

            return View(myDB.persons.ToList());
        }

そして最後に、メモリ内データベースに追加されたすべての人を表示するはずの ListAll.cshtml ですが、空白のページが表示されます

@model IEnumerable<HtmlForms.Models.Person>
@using HtmlForms.Models

@foreach(var p in Model )
{
    @p.Name;
    @p.Age;

}

私は何が欠けていますか?ListAllメソッドに 2 つの人物オブジェクトを手動で追加し、それをビューに渡すと、機能しますが、上記のコードは機能しません。

ありがとうございました

4

3 に答える 3