Я только начал разрабатывать в C#, используя ASP. Net Core и EntityFramework. У меня возникают трудности с попытками выяснить, как получить доступ и сохранить данные моего адреса. Короче говоря, у меня есть компании, у которых есть как минимум два адреса: адрес для выставления счетов и адрес службы.
У меня есть три модели (обратите внимание, я соединил свойства для целей этого поста).
Модель компании:
public int Id {get; set;}
public string Name {get; set;}
public virtual ICollection<Address> Addresses {get; set;}
Модель адреса:
public int Id {get; set;}
public int CompanyId {get; set;}
public string street1 {get; set;}
public AddressTypeId {get; set;
public AddressType AddressType {get; set;}
public virtual Company Company {get; set;}
Модель типа адреса:
public int Id {get; set;}
public string AddressType {get; set;}
Я использую EF с активной загрузкой. Я могу загрузить свою компанию на основе идентификатора, и я также могу показать РЕДАКТИРОВАТЬ , который содержит все данные о моей компании, но я не знаю, как загрузить разные адреса (выставление счетов и сервис), чтобы их можно было редактировать и возвращать в базу данных. Я только хочу изменить адрес службы и выставления счетов.
Мой контроллер имеет следующий код:
CompanyDetailsViewModel companyDetailsViewModel = new CompanyDetailsViewModel();
var company = _companyRepository.GetCompanyById(id);
var addresses = company.Addresses;
Address serviceAddress = null;
Address billingAddress = null;
foreach (var address in addresses)
{
switch (address.AddressType.Display.ToLower())
{
case "service":
serviceAddress = address;
break;
case "billing":
billingAddress = address;
break;
}
}
companyDetailsViewModel.Company = company;
companyDetailsViewModel.BillingAddress = billingAddress;
companyDetailsViewModel.ServiceAddress = serviceAddress;
return View(companyDetailsViewModel);
Вот что у меня есть в ViewModel
public Company Company { get; set; }
public List<CompanyType> CompanyTypeList { get; set; }
public List<CompanySource> CompanySourceList { get; set; }
public List<State> StateList { get; set; }
public string EncodedAddress { get; set; }
public Address ServiceAddress { get; set; }
public Address BillingAddress { get; set; }
И часть View
<input asp-for="@Model.Company.Name" class="form-control" />
<input asp-for="@Model.ServiceAddress.Street1" class="form-control"/>
<input asp-for="@Model.ServiceAddress.Street2" class="form-control" />
<input asp-for="@Model.ServiceAddress.City" class="form-control" />
<select asp-for="@Model.ServiceAddress.StateId" class="form-control"
asp-items="@(new SelectList(Model.StateList,"Id","StateAbbreviation"))">
</select>
<input asp-for="@Model.ServiceAddress.PostalCode" class="form-control" />
Надеюсь, это имеет смысл. Это немного сложно объяснить.
Обратите внимание, что я знаю, почему данные не обновляются (это потому, что я использую отдельные классы в ViewModel для адресов Service и Billing), но я просто не знать, как подключить тех, кто привел к этому вопросу. : -)
Спасибо большое за помощь.
--- Val