У меня есть приложение S # arp MVC со следующими проектами / слоями:
- Ядро (модель)
- Данные
- Веб (просмотр)
- Контроллеры
- Услуги
Один пример, показывающий проблему:
У меня есть модель Билет :
public class Ticket : Entity
{
public virtual string Summary { get; set; }
public virtual string Description { get; set; }
public virtual DateTime CreateOn { get; set; }
public virtual DateTime UpdatedOn { get; set; }
public virtual User CreatedBy { get; set; }
public virtual User AssignedTo { get; set; }
public virtual Priority Priority { get; set; }
public virtual Status Status { get; set; }
}
Он расположен в основном проекте ...
Для просмотра View Create (Ticket) мне нужен CreateTicketViewModel :
public class CreateTicketVM
{
[Required(ErrorMessage = "Required.")]
public string Summary { get; set; }
[Display(Required(ErrorMessage = "Required.")]
public string Description { get; set; }
[Required(ErrorMessage = "Required.")]
public int AssignedToId { get; set; }
[Required(ErrorMessage = "Required.")]
public int PriorityId { get; set; }
[Required(ErrorMessage = "Required.")]
public virtual int StatusId { get; set; }
public IList<User> Users { get; set; }
public IList<Priority> Priorities { get; set; }
public IList<Status> Status { get; set; }
}
Он расположен в проекте контроллера...
Пока все хорошо ... Но в моем TicketController мне нужно заполнить все списки CreateTicketVM (выпадающие списки в View).
Итак, я создал TicketService :
public class TicketService : ITicketService
{
readonly IRepository<User> userRepository;
readonly IRepository<Priority> priorityRepository;
readonly IRepository<Status> statusRepository;
...
public CreateTicketVM CreateNewCreateTicketVM()
{
var _ticket = new CreateTicketVM();
_ticket.Priorities = priorityRepository.GetAll();
_ticket.Status = statusRepository.GetAll();
_ticket.Users = userRepository.GetAll();
_ticket.Categories = categoryRepository.GetAll();
return _ticket;
}
}
Он расположен в сервисном проекте ...
Проблема с интерфейсом ITicketService:
public interface ITicketService
{
CreateTicketVM CreateNewCreateTicketVM();
}
Он находится в базовом проекте ... Но базовый проект не может включать проект контроллера (CreateTicketVM) ...
Итак, как мне справиться с этим?
Спасибо
Пол