如何只用一个控制器处理大量的派生模型

时间:2015-04-14 17:15:54

标签: c# asp.net asp.net-mvc asp.net-mvc-controller

我正在使用ASP.NET MVC,我有几个模型类都是从父对象派生的。我想在一个控制器动作中处理所有这些模型,因为它们几乎完全相同,除了一些数据字段。我想将它们保存到数据库中。我怎样才能实现这样的行为?

示例:

    class ParentModel {...}
    class ChildModel1 : ParentModel {...}
    class ChildModel2 : ParentModel {...}
    class ChildModel3 : ParentModel {...}
    class ChildModel4 : ParentModel {...}

    public class ModelController : Controller
    {
        //But with this I want to handle all the child objects as well
        //And add them automatically to the database.
        public ActionResult Add(ParentModel model)
        {
            db.ParentModel.Add(model);
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该创建一个ViewModel类,例如:

public class viewmodel 
    {
        public ChildModel1 childModel1 { get; set; }
        public ChildModel2 childModel2 { get; set; }
        public ChildModel3 childModel3 { get; set; }
        public ChildModel4 childModel4 { get; set; }
    }

然后创建一个视图模型对象:

viewmodel v = new viewmodel();

现在您可以将您的子模型添加到视图模型中:

v.childModel1 = yourchildmodel1;
v.childModel2 = yourchildmodel2;
v.childModel3 = yourchildmodel3;
v.childModel4 = yourchildmodel4;

现在你可以通过这个模型了。