我在编辑模型时遇到问题,该模型包含链接的其他模型的集合。 我正在使用模型类的强类型视图:
public class GroupViewModel
{
public GroupViewModel()
{
Group = new Group();
Sections = new List<Section>();
}
public Group Group { get; set; }
public IEnumerable<Section> Sections { get; set; }
}
在控制器的Edit方法中,我用正确的数据填充两个字段并将其传递给视图。正确显示我的viewmodel的视图,多重选择出现并填充了传递的数据,与Group相同。
但是在我将其发送回表单提交后,我在ModelState中得到了一个恐怖,类似“从类型'System.String'到类型'Myapp.Models.Section'的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。“
ASP.NET是否正确处理子集合,或者我需要使用旧的FormCollection处理它?</ p>
UPD:由于Section是class而且应用程序无法将解析的int转换为Section,并且可能无法从客户端获取某些字段(实际上,仅使用Id和Name进行多选,但是省略了其他字段)?
UPD1:作为临时解决方案,我将代码更改为:
public class GroupViewModel
{
public GroupViewModel()
{
Group = new Group();
Sections = new List<Section>();
}
public Group Group { get; set; }
public IEnumerable<int> SectionsIds { get; set; } //here
public IEnumerable<Section> SectionsDS { get; set; } //as here
}
在视图中我绑定它:
@Html.ListBoxFor(x => x.SectionIds,
new MultiSelectList(Model.SectionsDS, "Id", "Name"));
检索视图模型后,同步2个集合 - 手动虚拟导航和ID。
答案 0 :(得分:0)
,例如:
@for (int i = 0; i < items.Count(), i++)
{
Html.TextBoxFor(m => m[i].Foo1);
Html.TextBoxFor(m => m[i].Foo2);
}