我对 OOP 和 C# 真的很陌生,我试图理解,我如何才能尽可能地编写我的代码。在我的 ASP.NET MVC 3 应用程序中,我在一个控制器中有多个操作(在此示例代码中为两个),它们都返回一个不同的ViewModel
,它们都继承了相同的BaseViewModel
. 这是因为我在每个动作上都需要相同的数据,但每个动作都有额外的属性。
我知道我可以简单地创建一个ActionOneViewModel
接收ViewModel
对象的构造函数。但这是常见的方法吗?或者有其他选择吗?
查看型号:
class BaseViewModel
{
public string Name { get; set; }
public List<User> Users { get; set; }
}
class ActionOneViewModel : BaseViewModel
{
public bool FooBar { get; set; }
}
class ActionTwoViewModel : BaseViewModel
{
public string PingPong { get; set; }
}
控制器动作:
public ActionResult ActionOne ()
{
// this doesn't work (of course)
ActionOneViewModel model = (ActionOneViewModel)createViewModel();
model.FooBar = true;
return View(model);
}
public ActionResult ActionTwo ()
{
// this doesn't work (of course)
ActionTwoViewModel model = (ActionTwoViewModel)createViewModel();
model.PingPong = "blub";
return View(model);
}
private BaseViewModel createViewModel()
{
BaseViewModel model = new BaseViewModel();
//
// doing a lot of stuff here
//
return model;
}