Попытка передать IEntity в конструктор списка и возникли проблемы - PullRequest
0 голосов
/ 25 октября 2019

У меня есть объект клиента, у которого есть список заказов на продажу. Я пытаюсь создать частичное представление на своей веб-странице, которое позволяет мне использовать радиокнопки для просмотра и просмотра списков для каждого клиента. Проблема в том, что в контроллере клиента мне нужно передать IEntity клиента (через id) конструктору.

Я пытался найти это, но я новичок во всем этом и не думаю, чтоЯ использую правильные слова или, может быть, я просто еще недостаточно хорошо понимаю, чтобы найти ответ в коде других людей.

Объект клиента (и, очевидно, конструктор)

public class Customer : IEntity 
{
    [Key]
    public int CustomerId { get; set; }
    public int Id => CustomerId;
    [Display(Name = "First Name")]
    public string FirstName { get; set; }
    [Display(Name = "Last Name")]
    public string LastName { get; set; }
    [Display(Name = "Customer")]
    public virtual string Name => $"{FirstName} {LastName}";
    [Display(Name = "Address")]
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    [Display(Name = "City")]
    public string City { get; set; }
    [Display(Name = "State")]
    public string State { get; set; }
    [Display(Name = "Zipcode")]
    public string Zipcode { get; set; }
    [Display(Name = "Email")]
    public string Email { get; set; }
    [Display(Name = "Phone Number (USA)")]
    public string UsaPhone { get; set; }
    public decimal TotalSales => SalesOrders.Sum(so => so.OrderTotal);
    public List<SalesOrder> SalesOrders { get; private set; }
    public Customer()
    {
        SalesOrders = new List<SalesOrder>();
    }

}

Код от контроллера клиента, где я получаю ошибку

public ActionResult _customersSalesOrders(int id)
    {
        var customer = db.Customers.Find(id);
        var salesOrderList = new List<SalesOrder>(customer);
        return PartialView(salesOrderList);
    }

Результатом является ошибка CS1503 "Аргумент 1: невозможно преобразовать из 'ITP245.Models.Customer' в 'int'

1 Ответ

1 голос
/ 25 октября 2019

Вы создаете новый List<SalesOrder>, что означает, что вы можете помещать в него только объекты типа SalesOrder. Ваш класс Customer не наследуется от SalesOrder и не может быть помещен в список.

Может быть, вы хотите разместить заказы клиентов в списке?

Если это так, ваш кодможет выглядеть примерно так:

public ActionResult _customersSalesOrders(int id)
{
    var customer = db.Customers.Find(id);
    var salesOrderList = customer.SalesOrders;
    return PartialView(salesOrderList);
}
...