我在网上搜索但没有找到解决以下问题的方法:
假设我有三个ViewModel类
public class ViewModelNewPerson
{
public string PersonName;
public string Address;
public string EyeColor;
//etc
}
public class ViewModelSelectPerson
{
public int SelectedPersonId;
}
public class ViewModelComposite
{
public ViewModelSelectPerson selectViewModel;
public ViewModelNewPerson newPersonViewModel;
}
我想做以下事情:
在Controller
我想创建一个GET
Action
,它使用类ViewModelComposite
作为其获取模型,并且在视图中我希望用户从中选择遵循两个可用操作:选择现有人员,并添加新人员作为选定值。
因此,我需要在View
中创建两个表单,并使用类{{的Post模型将POST
Action
添加到Controller
1}}和ViewModelNewPerson
。
我的问题是,如何使用自定义模型绑定器进行手动模型绑定,可以将ViewModelSelectPerson
中的复合类转换为ViewModelComposite
创建新人,以及选择现有人员的ViewModelNewPerson
中的Action
?
编辑:
现在我有了分解类ViewModelSelectPerson
并将两个类中的每个属性声明为复合类的想法,我认为默认的模型绑定器可以解决问题。但这会降低复合模式,而不是我想要的东西。
答案 0 :(得分:0)
您可以在表单中使用一个单一的视图模型,您将获得一个接收单个视图模型的帖子操作。
在您的控制器代码中:
public ActionResult GetSomeData(MyCustomViewModel model){
// add the first element
var person = Person.Add(model.Person);
// update the second object in model, with related / needed ID
model.PersonContent.PersonId = person.id;
// add in related content
var AddedContent = PersonContent.Add(model.PersonContent);
}
单个表单,多个操作,多个表