Модель с несколькими видами - PullRequest
0 голосов
/ 07 ноября 2019

Я думаю, что мне нужно иметь несколько моделей представлений.

Я никогда по-настоящему не понимал MVC и использовал инструменты скаффолдинга. Что я знаю, так это базы данных.

public class Customer:BaseEntity
{
    public string CompanyName { get; set; }
    public Addresses.Address Address { get; set; }
    public Contacts.Contact Contact { get; set; }

    public ICollection<Comments.Comment> Comments { get; set; }
}

public class Address:BaseEntity
{
    public string NoName { get; set; }
    public string AddressL1 { get; set; }
    public string AddressL2 { get; set; }
    public string Town { get; set; }
    public string County { get; set; }
    public string Postcode { get; set; }
}

public class BaseEntity
{
    public int Id { get; set; }
}
public class Comment:BaseEntity
{
    public string Subject { get; set; }
    public string Body { get; set; }
    public DateTime DateTime { get; set; }
    public Jobs.Job Job { get; set; }
    public Users.ApplicationUser AppUser { get; set; }
}

Мне нужно, чтобы я мог отображать клиента, адрес, контакт и просматривать все комментарии для отображения в сетке.

Я уверен, что яупустить что-то действительно простое.

1 Ответ

0 голосов
/ 07 ноября 2019

Если у вас нет других свойств, которые вы хотели бы отобразить, я не вижу причин для создания дополнительного класса. Таким образом, вы можете передать сам класс Customer в View.

Но если у вас есть другие поля, которые вы хотели бы использовать в представлении, вы можете создать класс модели представления, у которого класс Customer является одним из его свойств.

public class CustomerVM {
  public Customer Customer { get; set; }
  public OtherProperty Property { get; set; }
}

Затем в контроллере назначьте клиента для модели представления и передайте его представлению.

var customer = fetchCustomer();
CustomerVM vm = new CustomerVM {
   Customer = customer,
   OtherProperty = otherProperty
};

return View(vm);

В представлении вы можете получить доступ и отобразить свойства

@model CustomerVM

@Model.Customer.Address.NoName // and so fourth for other properties
...