gpt4 book ai didi

asp.net-mvc - 模型需要注入(inject)依赖时的模型(ViewModel)绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 10:08:17 25 4
gpt4 key购买 nike

我在 ASP.Net MVC 应用程序中使用 Ninject 进行依赖注入(inject)(这是我第一个使用 Ninject 或 DI 的项目)。

我选择使用 Model-View-ViewModel 模式。 View 模型将提供我将绑定(bind)到实际 View 的所有属性,但还需要访问数据库以获取数据列表等内容。例如:

public class CreateGetIncidentViewModel
{

private IDBContext _dbContext = null;

[Required]
public EmployeeType EmployeeType { get; set; }


[Required]
[StringLength(50)]
public string Department { get; set; }

/
public IEnumerable<SelectListItem> GetEmployeeTypeSelectList()
{
// Simplified for brevity
var employeeTypes = _dbContext.EmployeTypes.Where().... // Go select the employee types

var employeeTypeSelectList = new List<SelectListItem>();

foreach(var employeeType in employeeTypes){
employeeTypeSelectList.Add(new SelectListItem(){
// Set select list properties
});
}

return employeeTypeSelectList;
}
}

我的问题是:
  • IDBContext 是 Ninject 中的一个注册依赖项。通过实例化直接访问具体类型是不行的。
  • 我必须以某种方式将该依赖项注入(inject)到此类中,或者以某种方式通过其他已经解决了依赖项的类来访问该依赖项。

  • 鉴于我的 ViewModel 经常通过模型绑定(bind)由 ASP.Net MVC 自动补充,我如何将我的依赖项添加到我的 ViewModel 中?

    我经历了多种方式,但它们看起来都很脏。我可以(但不想)
  • 实现服务定位器模式只是简单地从 ViewModel 中解决我的 IDBContext 依赖关系。
  • 在我的 Controller 中解析 IDBContext 并在手动构建 ViewMode 时将其传递给我的 ViewModel,即 new CreateGetIncidentViewModel(dbContext);
  • 这并不能解决 View 模型被 MVC 水合的问题,尽管当模型被发布到一个 Action 时

  • 建议?

    最佳答案

    如果您希望采用 Darin 提到的自定义模型绑定(bind)器路线,请查看:https://stackoverflow.com/a/24166483/71906

    关于asp.net-mvc - 模型需要注入(inject)依赖时的模型(ViewModel)绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679303/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com