sách gpt4 ai đã đi

asp.net-mvc - 如何将对象传递给我的 VIewModel 的构造函数? ASP.NET MVC 3,忍者

In lại 作者:行者123 更新时间:2023-12-04 13:28:44 25 4
mua khóa gpt4 Nike

我一直在使用 Bob Cravens 博客中描述的存储库模式来创建我的应用程序,但我有点新,仍然在寻找解决方法。我想将我的 DataService 对象注入(inject)到我的 ViewModel 的构造函数中,这样我就可以创建一个 SelectList 对象,并在我的 View 中创建一个下拉框。但是我似乎无法让绑定(bind)工作,每次创建 ViewModel 时,它都会查找/执行无参数构造函数!我在 SO 上尝试了各种使用答案的方法,但无济于事。帮助将不胜感激。

View 模型:

public class ServerCreateViewModel
{
public SelectList Companies { get; private set; }

public ServerCreateViewModel()
{

}

public ServerCreateViewModel(DataService _dataService)
{

Companies = new SelectList(_dataService.Companies.All(), "Id", "CompanyName");

}

忍者模块:
        Bind().ToSelf()
.InRequestScope();

var _dataService = Kernel.Get();

Bind()
.ToSelf()
.WithConstructorArgument("_dataService", _dataService);

//Bind()
// .ToSelf()
// .WithConstructorArgument("_dataService", ctx => ctx.Kernel.Get());

Controller :
    public ActionResult Create(ServerCreateViewModel viewModel)
{

return View(viewModel);
}

1 Câu trả lời

你不应该那样做!

View 模型(实际上是所有模型)应该只是包含一些数据的存储桶。它们不应依赖于任何业务逻辑、服务等。

填充模型并将它们传递给 View 是 Controller 的责任。

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);
}

DataService 应该被注入(inject)到 Controller 中,而不是 View 模型中。

关于asp.net-mvc - 如何将对象传递给我的 VIewModel 的构造函数? ASP.NET MVC 3,忍者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7820583/

25 4 0
Bài viết được đề xuất: jpa - JPA中的Oracle文本条件查询
Bài viết được đề xuất: python - OpenCV python 重叠粒子大小和数量
Bài viết được đề xuất: java - IntelliJ : Cannot resolve method 'run(java.lang.Class, String[])'
Bài viết được đề xuất: sql - 合并主键 - 级联更新
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com