Так у меня есть следующие 2 модели:В EF/MVC можно ли редактировать виртуальную собственность?
[Table("Company")]
public class Company {
public virtual List<UserAccount> Users {
get {
// I load my users here
}
}
}
[Table("UserAccount")]
public class UserAccount {
public string email { get; set; }
}
На мой взгляд, я стараюсь, чтобы изменить его:
@model MyXsite2013.Company
<table>
foreach (UserAccount ua in Model.Users) {
<tr class="noRowHover">
<td>
@Html.TextBoxFor(modelItem => ua.email)
</td>
</tr>
}
</table>
И постбэка, я пытаюсь сохранить:
public ActionResult Edit(Company companyModel) {
Company companyContext = database.Companies.Find(companyModel.ID);
database.Entry(companyContext).CurrentValues.SetValues(companyModel);
companyContext.IsActive = true;
database.SaveChanges();
}
Это, конечно, не сохраняет изменения для Пользователей, на самом деле он даже не видит изменений.
Согласно к моему пониманию вашего вопроса. Мы не можем использовать эту страсть, потому что виртуальное ключевое слово используется для целей внешнего ключа. если мы используем виртуальное ключевое слово, это означает, что коллекция будет ленивой загрузкой. пожалуйста, поправьте меня, если я вернусь. –
PLease прочитал [this] (http://stackoverflow.com/questions/4949991/binding-collections-in-mvc) и [this] (http://stackoverflow.com/questions/6852559/mvc3-modelbinding-to- а-коллекция отправленный-обратно-с индексом зазоров). После успешной привязки в post post вы прочтете «Компания», затем обновите ее свойства и коллекцию (merge \ removeAll + add). – lavrik
Вы должны обернуть свою форму в '@using (Html.BeginForm()) {}'. –