常に同じプロジェクトで (私に回答した人のために)、私はエンティティ VehicleFuelCard (関係 1 対多) と関係しているエンティティ "Person" を持っています。私の「Create Person」ビューには、実際には「Create Fuel Card」ビューである部分ビューを AJAX コードで含めました。
<script type = "text/javascript">
function AddVehicleFuelCard() {
$("#test").load("@Url.Action("AddVehicleFuelCard","Person",
new { personViewModel = Model })");
}
</script>
そしてそれを PersonController で呼び出します:
public ActionResult AddVehicleFuelCard(PersonViewModel personViewModel)
{
ViewBag.Id_VehicleFuelCardCompany = new SelectList(db.VehicleFuelCardCompanies, "Id_VehicleFuelCardCompany", "Name");
return PartialView("PartialVehicleFuelCard", personViewModel);
}
私が使用するViewModelは次のとおりです。
public class PersonViewModel
{
private Person _person;
public List<VehicleFuelCard> listVehicleFuelCard;
public Person Person
{
get
{
return this._person;
}
}
public PersonViewModel()
{
this._person = new Person();
}
public PersonViewModel(Person person)
{
this._person = person;
}
public VehicleFuelCard NewVehicleFuelCard
{
get
{
VehicleFuelCard element = new VehicleFuelCard();
element.Person = this.Person;
Person.VehicleFuelCards.Add(element);
return element;
}
}
public PhoneCard NewPhoneCard
{
get
{
PhoneCard element = new PhoneCard();
Person.PhoneCards.Add(element);
return element;
}
}
public ProductAllocation NewProductAllocation
{
get
{
ProductAllocation element = new ProductAllocation();
Person.ProductAllocations.Add(element);
return element;
}
}
}
そして、コントローラーのアクションの作成:
public ActionResult Create()
{
ViewBag.Id_ProductPackageCategory = new SelectList(db.ProductPackageCategories, "Id_ProductPackageCategory", "Name");
return View();
}
//
// POST: /Person/Create
[HttpPost]
public ActionResult Create(PersonViewModel personViewModel)
{
if (ModelState.IsValid)
{
db.Persons.AddObject(personViewModel.Person);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Id_ProductPackageCategory = new SelectList(db.ProductPackageCategories, "Id_ProductPackageCategory", "Name", personViewModel.Person.Id_ProductPackageCategory);
return View(personViewModel);
}
人を追加している間に燃料カードを追加するアイデアはありますか? ありがとう !