gpt4 book ai didi

c# - 我将我的服务注入(inject)我的 Controller 。我应该将我的服务注入(inject)到我的 ViewModel 中吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:14:14 25 4
gpt4 key购买 nike

所以,我一直在建立一个全新的网站来取代我们目前的经典 asp 网站。我建立了一个基础项目并添加了我将使用的所有不同技术。

忍者
自动映射器
分页列表
英孚 4.0

到目前为止,我有一个网站的工作原型(prototype)。它从数据库中提取数据,并显示在我的页面上。我认为我没有正确遵循模式。因为我的 Controller Action 看起来很奇怪。我开始认为我需要更改我的注入(inject)以将我的服务注入(inject)我的 View 模型?将服务插入 ViewModel 是否常见?

View 模型

 public class ParcelDetailViewModel
{
public Property Property { get; set; }
public int CurrentYear { get; set; }
public IEnumerable<AltOwnership> AltOwnership { get; set; }
public Ownership Ownership { get; set; }
public TotalValues TotalValues { get; set; }
public SiteAddressViewModel SiteAddress { get; set; }
public Value CurrentValues { get; set; }

public Transfer LatestTransfer { get; set; }
public LegalDescription LegalDescription { get; set; }

}

Controller
public class PropertyController : Controller
{
ICamaService _service = null;

[Inject]
public PropertyController(ICamaService service)
{
_service = service;
}

//TODO: ADD ACTIONS

public ViewResult List(int? page, int? size = 100)
{
var result = _service.GetProperties(page,size);
IList<ParcelDetailViewModel> ViewModel;
ViewModel = new List<ParcelDetailViewModel>();
Mapper.Map<IEnumerable<Models.Property>, IEnumerable<ParcelDetailViewModel>>(result, ViewModel);
return View(ViewModel.ToPagedList(page ?? 1, size ?? 100));

}


public ViewResult Details(string id)
{
var property = _service.GetProperty(id);
var acct = property.AccountNumber;
var AltOwners = _service.GetAltOwners(id);
var LegalDescription = _service.GetLegalDescription(id);
var Legals = _service.GetLegals(id).FirstOrDefault();
var Ownership = _service.GetOwnership((decimal)property.OwnerLookup);
var Values = _service.GetValues(acct);
var TotalValues = _service.GetTotalValues(acct);
var Location = _service.GetLocation(property.LocationLookup);

ParcelDetailViewModel ViewModel = new ParcelDetailViewModel();
SiteAddressViewModel SitusAddress = new SiteAddressViewModel();

ViewModel.SiteAddress = SitusAddress;

Mapper.Map<Models.Property, ParcelDetailViewModel>(property, ViewModel);
Mapper.Map<IEnumerable<AltOwnership>, ParcelDetailViewModel>(AltOwners, ViewModel);
Mapper.Map<Ownership, ParcelDetailViewModel>(Ownership, ViewModel);
Mapper.Map<TotalValues, ParcelDetailViewModel>(TotalValues, ViewModel);

Mapper.Map(Location, SitusAddress);
Mapper.Map(property, SitusAddress);


return View(ViewModel);
}

最佳答案

将服务注入(inject) Controller 是完全正确的。

另一方面,将任何服务注入(inject)到 View 模型中将违背 View 模型的想法——类包含数据但没有操作。您将如何处理 View 模型中的服务?

关于c# - 我将我的服务注入(inject)我的 Controller 。我应该将我的服务注入(inject)到我的 ViewModel 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9420421/

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