asp.net mvc数据绑定

2020-06-11 08:42发布

问题:

[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吗?

回答1:

重写ModelBinder,自己实现bind方法



回答2:

首先建议你提供 AddTeacher 和 AddStudent 2个接口。

如果一定要一个接口,那么参数就不能是 Person了。因为扩展字段是取不到的
定义一个
class PersonTemp {
public int Id {get; set;}
public int Type {get; set;}
//通用的子类临时存储字段
public string tempData {get; set;}
}
拿到参数后根据type去构建相应的子类



回答3:

可以使用ModelBinder