Asp.net MVC Composite类自定义模型绑定

时间:2013-12-19 10:20:02

标签: c# asp.net asp.net-mvc viewmodel composite

我在网上搜索但没有找到解决以下问题的方法:

假设我有三个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并将两个类中的每个属性声明为复合类的想法,我认为默认的模型绑定器可以解决问题。但这会降低复合模式,而不是我想要的东西。

1 个答案:

答案 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);
}

单个表单,多个操作,多个表