[HttpPost]
public ActionResult AddPerson(Person p) { return Json("OK"); }
class Person {
public int Id {get; set;}
public int Type {get; set;}
}
class Teacher : Person {
public string Job {get; set;}
}
class Student : Person {
public int StudentCard { get; set; }
}
调用AddPerson时,当Type = 1 时,p成为 Teacher对象
,当Type = 2 时,p成为 Student对象
该如何实现,需要自己实现model binder吗?
重写ModelBinder,自己实现bind方法
首先建议你提供 AddTeacher 和 AddStudent 2个接口。
如果一定要一个接口,那么参数就不能是 Person了。因为扩展字段是取不到的
定义一个
class PersonTemp {
public int Id {get; set;}
public int Type {get; set;}
//通用的子类临时存储字段
public string tempData {get; set;}
}
拿到参数后根据type去构建相应的子类