Asp.net mvc с проблемой структуры объекта: создание или обновление адреса для контакта.Адрес заполнить запросом Ajax - PullRequest
1 голос
/ 17 сентября 2010

У меня есть 2 связанных объекта: Contact и Address.Существует связь между собой.1 Контакт с 1 адресом.

В форме создания я заполняю текстовые поля FirstName и LastName.У меня есть поле, связанное с адресом.

В некоторых ситуациях я выполняю запрос AJAX для автоматического заполнения информации об адресе.

Проблема в том, что при нажатии кнопки «Сохранить» создается новая запись адреса, а не просто связывается контакт с AddressID, предоставленным запросом AJAX.

Желаемое поведение: если AddressID пуст, сохраните новую запись адреса.Если AddressID НЕ пуст, просто свяжите его.

<%: Html.TextBoxFor(model => model.ContactInfo.FirstName)%>
<%: Html.TextBoxFor(model => model.ContactInfo.LastName)%>

<%:Html.TextBoxFor(model => model.ContactInfo.Address.AddressID)%>    
<%:Html.TextBoxFor(model => model.ContactInfo.Address.City)%>        
<%:Html.TextBoxFor(model => model.ContactInfo.Address.Street)%>    

Как это можно сделать?

Вот когда я сохраняю сущность

public ActionResult Create(Contact ContactInfo){
    try
    {  
        ContactInfo.IsActive = true;
        _db.AddToContacts(ContactInfo);
        _db.SaveChanges();
    }
}

1 Ответ

0 голосов
/ 17 сентября 2010

Вы имеете в виду, как:

    ContactInfo.IsActive = true;
    if (ContactInfo.HasValue)
    {
        ContactInfo.Address = _db.Addresses.Single(a => a.AddressID == ContactInfo.Address.AddressID);
    }
    _db.AddToContacts(ContactInfo);
    _db.SaveChanges();

С ассоциациями FK (необязательно, в EF 4) вы также можете сделать:

    ContactInfo.IsActive = true;
    if (ContactInfo.HasValue)
    {
        ContactInfo.Address = null;
        ContactInfo.AddressID = ContactInfo.Address.AddressID;
    }
    _db.AddToContacts(ContactInfo);
    _db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...