爲了簡單和測試,我從一個新項目中完成這項工作,然後將其應用到我的實際項目中,一旦我理解了問題。來自Collection的數據從數據庫中缺失(ASP.NET MVC)
我做了一個模型,名爲人,其中包含一個列表屬性,名爲ServiceNeeded。前端用戶可以根據需要編碼儘可能多的服務,因此動態創建ServiceNeeded的輸入字段。在POST方法中,那些字符串輸入按預期綁定。我將Person對象保存到數據庫中,並按預期工作。當我嘗試從數據庫中檢索人員對象時,除服務需求都存在。
這裏是我的代碼
模型(Person.cs):
public class Person
{
public Guid Id { get; set; }
public String Name { get; set; }
public List<String> ServiceNeeded { get; set; }
public Person()
{
this.ServiceNeeded = new List<String>();
}
}
控制器(索引和[POST]創建方法):
public ActionResult Index()
{
var x = db.People.ToList();
return View(db.People.ToList());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Name,ServiceNeeded")] Person person)
{
if (ModelState.IsValid)
{
person.Id = Guid.NewGuid();
db.People.Add(person);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(person);
}
正如我所說的輸入字段對於ServicesNeeded是動態創建的,但可以正確綁定到模型。
下面是運行期間的一些截圖:
正如所看到的,相同人是存在的,除了服務需要。我對ASP.NET MVC和一般的Web開發相當新穎。我在我的項目中處理其他集合,雖然是對象的集合。只有這個特殊情況我不明白。我的錯誤在哪裏?
謝謝你的回覆先生。我按照您的建議進行了修改,但似乎沒有解決我的問題。當我添加「包含」時出現此錯誤: 附加信息:指定的包含路徑無效。 EntityType'WebApplication3.Models.Person'不聲明名爲'ServiceNeeded'的導航屬性。我也在嘗試加載中的不同方法,但目前爲止還沒有進展。 – JeanDeus