我有
GET
在我的ViewModel中,我有一个ClassA列表。在我看来,我希望将ClassA的列表放在一个表单中以及它们包含的ClassB中,以便可以更新ClassA和ClassB对象。
所以在我看来我有
public class ClassA
{
public int ID { get; set; }
public List<ClassB> ClassBList { get; set; }
}
public class ClassB
{
public int ID { get; set; }
public string Name { get; set; }
public bool IsValid { get; set; }
}
// View Model Razor is using
public class IndexViewModel
{
public List<ClassA> ClassAList { get; set }
public IndexViewModel()
{
ClassAList = /*...init list from repository method...*/
}
}
// POST method
[HttpPost]
public IActionResult Index(IndexViewModel model)
{
// Here is where only the model has the updated ClassA properties, but not their ClassB properties
return RedirectToAction("Index");
}
这是视图模型
@for (int i = 0; i < Model.ClassA.Count(); i++)
{
<input asp-for="@Model.ClassA[i].ID" />
@for (int j = 0; j < Model.ClassA[i].ClassBList.Count(); j++)
{
<input asp-for="@Model.ClassA[i].ClassBList[j].ID" />
<input asp-for="@Model.ClassA[i].ClassBList[j].Name" />
<input asp-for="@Model.ClassA[i].ClassBList[j].IsValid" />
}
}
当表单提交时,在post方法中,ClassA属性会更新,但是,该ClassA对象的所有ClassB属性都不会。
有没有办法让ClassBList中的属性及其父ClassA属性参与?
答案 0 :(得分:0)
看起来你有一个错误,可能导致Exception或Binding数据覆盖。
变化:
i < Model.ClassA[i].ClassBList.Count()
要:
j < Model.ClassA[i].ClassBList.Count()
另外请确保您的模型是一个类而不是列表。
@model SomeViewModel and not @model List<ClassA>