@authoraytee

Как вывести сложные данные в представление ASP.Net MVC5?

У меня есть таблица "Скидки", которая в себе содержит внешние ключи для заказчиков и материалов (2-х разных таблиц), а проблема в том, что я не могу вывести данные в представление

Например, страница "Платежи" имеет только ключ на заказчиков, в ней вывести получается как:
DatabaseContext db = new DatabaseContext();

public ActionResult Payments()
{
    var payments = db.Payments.Include(p => p.Customer);
    return View(payments.ToList());
}

И в представлении
@foreach (var f in Model)
{
    <tr class="content">
        <td><p>@f.Id</p></td>
        <td><p>@f.Date</p></td>
        <td><p>@f.Customer.CustomerName</p></td>
    </tr>
}


Собственно вопрос - как вывести и заказчиков, и материалы на страницу со скидками?

Контроллер
DatabaseContext db = new DatabaseContext();

public ActionResult Sales()
{ 
    //Что сюда писать?
    return View();
}


Модель
public class Sale
    {
        public int Id { get; set; }

        public int? CustomerId { get; set; }
        public Customer Customer { get; set; }
        public int? MaterialId { get; set; }
        public Material Material { get; set; }
        
        public float Changes { get; set; }
    }


Контекст
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class DatabaseContext : DbContext
    {
        public DatabaseContext() : base("conn")
        { }

        //Non-inheriting
        public DbSet<Customer> Customers { get; set; }
        public DbSet<Material> Materials { get; set; }

        //Other
        public DbSet<DeliveryAddress> DeliveryAddresses { get; set; }
        public DbSet<Payment> Payments { get; set; }
        public DbSet<Sale> Sales { get; set; }
    }
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Используйте композицию, грубо говоря выбирайте данные из одного и другого и вставляйте этиданные в модель , ведь модель страницы не обязана совпадать с моделью данных, для мэппинга используйте automapper
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы