Итак, я создаю новый веб-сайт, чтобы заменить наш текущий классический сайт ASP.Я создал базовый проект и добавил все различные технологии, которые я буду использовать.
Ninject Automapper PagedList EF 4.0
Пока у меня есть рабочий прототип сайта.Он извлекает данные из базы данных и отображается на моей странице.Я думаю, что я не следую шаблону правильно.Потому что мои действия контроллера выглядят странно.Я начинаю думать, что мне нужно поменять инъекцию, чтобы внедрить мой сервис в мою модель представления?Распространено ли вставлять сервис в ViewModel?
ViewModel
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; }
}
Контроллер
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);
}