Kia*_*ada 6 asp.net-mvc ninject viewmodel
我一直在使用Bob Cravens博客中描述的存储库模式来创建我的应用程序,但我有点新,并且仍在寻找解决方案.我想将我的DataService对象注入到我的ViewModel的构造函数中,这样我就可以创建一个SelectList对象,并在我的视图中创建一个下拉框.但是我似乎无法使绑定工作,每次我创建ViewModel它都会查找/执行无参数构造函数!我已尝试过各种方式在这里使用答案,但无济于事.非常感谢帮助.
视图模型:
public class ServerCreateViewModel
{
public SelectList Companies { get; private set; }
public ServerCreateViewModel()
{
}
public ServerCreateViewModel(DataService _dataService)
{
Companies = new SelectList(_dataService.Companies.All(), "Id", "CompanyName");
}
Run Code Online (Sandbox Code Playgroud)
Ninject模块:
Bind<DataService>().ToSelf()
.InRequestScope();
var _dataService = Kernel.Get<DataService>();
Bind<ServerCreateViewModel>()
.ToSelf()
.WithConstructorArgument("_dataService", _dataService);
//Bind<ServerCreateViewModel>()
// .ToSelf()
// .WithConstructorArgument("_dataService", ctx => ctx.Kernel.Get<DataService>());
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Create(ServerCreateViewModel viewModel)
{
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
Jak*_*cki 14
你不应该这样做!
视图模型(实际上所有模型)应该只是带有一些数据的桶.他们不应该依赖任何业务逻辑,服务等.
控制器负责填充模型并将其传递给视图.
public class ServerCreateViewModel
{
public SelectList Companies { get; private set; }
}
public ActionResult Create()
{
var viewModel = new ServerCreateViewModel
{
Companies = new SelectList(_dataService.Companies.All(), "Id", "CompanyName")
};
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
应将DataService注入控制器,而不是视图模型.
| 归档时间: |
|
| 查看次数: |
3074 次 |
| 最近记录: |