将ViewModels与其他ViewModelBinders绑定

时间:2010-01-12 17:11:16

标签: asp.net-mvc modelbinders

我有一个viewmodel(让我们称之为HouseVM)但它包含另一个viewmodel(KitchenVM)。我已经为KitchenVM创建了一个自定义模型绑定器。现在我正在创建HouseVM模型绑定器。如何在HouseVM模型绑定器中访问我已经为KitchenVM完成的模型绑定?

注意:我看过this post

1 个答案:

答案 0 :(得分:0)

选项#1

您可以让HouseVM的模型绑定器继承自KitchenVM的自定义绑定器。这将允许Kitchen VM(或相关)属性的绑定仍然受该绑定器的约束。类似的东西:

public class HouseViewModelBinder : KitchenViewModelBinder
{
    protected override void BindProperty( ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor )
    {
        if (propertyDescriptor.PropertyType == typeof(KitchenVM))
        {
            base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
        }
        // bind the other properties here
    }
}

选项#2

This post by Jimmy Bogard可能是实现各种自定义模型绑定器的另一种好方法,允许每种类型绑定到其适当的模型。