asp.net-mvc – 模型需要注入依赖项时的模型(ViewModel)绑定
|
我正在使用Ninject在ASP.Net MVC应用程序中进行依赖注入(这是我的第一个使用Ninject或DI的项目). 我选择使用Model-View-ViewModel模式.视图模型将提供我将绑定到实际视图的所有属性,但还需要访问数据库以获取数据列表等内容.例如: 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中的注册依赖项.通过实例化直接访问具体类型将是禁忌. 鉴于我的ViewModel经常通过模型绑定由ASP.Net MVC自动补充,我如何将我的依赖项放入我的ViewModel? 我经历过多种方式,但它们看起来都很脏.我可以(但不想) >实现服务定位器模式,只需从ViewModel中解析我的IDBContext依赖关系. >虽然将模型发布到动作时,这并不能解决视图模型被MVC水合的问题 建议? 解决方法
您可以编写一个自定义模型绑定器,将依赖项注入视图模型构造函数. 这就是说,使用ASP.NET MVC中的MVVM模式恕我直言从一开始就是错误的方法,如果你这样做,你必须为许多痛苦做好准备.你准备好了吗? 如果没有,这是我建议你的: Controller -> Domain model -> View model -> View 在这种模式中,您可以让控制器了解存储库(DbContext – 由DI框架自动注入其中). 流程1: >控制器接收来自用户的请求 流程2: >控制器从视图接收请求(例如表单提交) 在此示例中,视图模型不了解任何存储库或数据访问或DbContexts.视图模型是视图的表示.域模型和视图之间的映射是控制器的责任(可以委托给映射层).我个人使用 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我可以在Ajax.ActionLink中使用OnSuccess事
- 你可以在ASP.NET中指定差异./,../,~/
- asp.net-mvc – 如何将httppostedfilebase转换为String数组
- asp.net – 403禁止错误
- asp.net-mvc – 具有服务层和存储库层的ASP.NET MVC,应该在
- asp.net-mvc – asp.net mvc 4将表单从站点发送到电子邮件
- asp.net文件下载 – 跟踪下载的大小
- asp.net-mvc-3 – 为什么Html.Label()不适用于句点?
- .net – Control.ResolveUrl与Control.ResolveClientUrl对比
- asp.net – ‘检测到Autofac循环组件依赖性’错误
- asp.net – 网站在解决方案构建后需要很长时间才
- asp.net-mvc – ASP.NET MVC文件名下划线
- asp.net-mvc-3 – .Net Mvc 3触发器(提交按钮除外
- asp.net – 脚本标签和链接标签进入asp:内容或外
- asp.net-mvc – MVC4是否被烘烤到.NET 4.5?
- asp.net – 将自动Web测试集成到构建过程中
- asp.net-mvc – 当我尝试在我的asp.net mvc中导入
- asp.net-mvc – 使用LINQ to SQL在ASP.NET MVC中
- ASP.NET控件的命名指南是什么?
- asp.net – 为什么我的主机(softsyshosting.com)
