【发布时间】:2015-10-09 18:11:31
【问题描述】:
我有一类属性,这些属性是从我需要在我的 MVC 应用程序的每个视图上都可用的服务中设置的。
因此,我创建了一个“基本视图模型”,我的视图模型将从中继承。
public class BaseModel
{
public BaseModel()
{
foo = "foo value";
bar = "bar value";
}
public string foo { get; set; }
public string bar { get; set; }
}
public class HomeIndexViewModel : BaseModel
{
}
然后我创建了一个“基本控制器”,我的所有控制器都将继承自:
public class BaseController : Controller
{
public BaseController()
{
}
}
public class HomeController : BaseController
{
public ActionResult Index()
{
HomeIndexViewModel model = new HomeIndexViewModel();
return View(model);
}
}
这是按预期工作的,我可以在我看来调用@Model.foo 并获得foo value。
但是我不认为我应该在它的构造函数中初始化 BaseModel 的值,因为这没有使用依赖注入并且将变得难以进行单元测试。
如何将值 foo 和 bar 的设置移动到 BaseController 中?
当然,我可以在HomeController 中设置值,但我宁愿从控制器中抽象出来,因为逻辑总是相同的,并且会使我的所有控制器膨胀。
【问题讨论】:
-
@nopeflow 你能举例说明你的意思吗?谢谢
-
@Curl 我已经删除了我的评论,我认为我误解了这个问题,现在我发现我的评论毫无意义。
-
你不想把这个参数传递给
BaseController构造函数吗?
标签: c# asp.net-mvc inheritance dependency-injection model