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

How to handle lots of derived model with only one 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);
        }
    }

您应该创建一个 ViewModel Class 例如:

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;

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