我只是在表单上输入姓名和年龄并将其发布到我的家庭控制器中的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 方法中手动添加两个人对象并将其传递给视图,它可以工作。但上面的代码没有。
谢谢