我正在使用ASP.Net MVC 4,我对模型绑定有疑问。
如果有两个班级:
public class Employee {
public string Name { get; set; }
public List<JobSkill> JobSkills { get; set; }
}
public class JobSkill {
public string Name { get; set; }
}
所以我可以使用Employee作为操作的参数,如果它接收到嵌套了JobSkills数组的数据,它的JobSkills属性就不会是空的。
public ActionResult Create(Employee employee) {
var jobSkillAmount = employee.JobSkills.Count();
....
}
我的问题是如果我将JobSkills属性包装到另一个类,例如:
public class HasMany<T> {
private List<T> Items { get; set; }
public class HasMany() {
}
public class HasMany(List<T> items) {
Items = items;
}
public void SetItems(List<T> items) {
Items = items;
}
}
public class Employee {
public string Name { get; set; }
public HasMany<JobSkill> JobSkills { get; set; }
}
public class JobSkill {
public string Name { get; set; }
}
我无法像以前那样找到让行动起作用的方法。 是否有任何方法让模型绑定使其工作?
答案 0 :(得分:2)
问题是因为默认模型绑定器知道如何绑定到col-xs-12 col-lg-6
但对List<T>
一无所知(怎么可能)。
两个选项:
1编写自己的模型绑定器
或2继承自HasMany<T>.SetItems()
(未经测试,可能仍然无法胜任,但尝试最快),即:
List<T>
答案 1 :(得分:0)
改变你的模特:
public class Employee {
public string Name { get; set; }
public virtual ICollection<JobSkill> JobSkills { get; set; }
}
public class JobSkill {
public string Name { get; set; }
}
并提交HasValue代码,你不需要它。