2つのモデルがあるとしましょう:
顧客 (ID,名前) <[0..1 - *]> 請求書 (ID,名前,値)。
ここで、Route /Customer/Create により、新しい顧客 (名前用の 1 つのテキスト ボックス) を作成し、顧客に請求書を追加する TelerikGrid の下に作成できます。
私の解決策は次のとおりです。
- 顧客の作成 (「-」などのデフォルト名)
- データベースに保存
- CustomerId を読み取る
- 請求書をこの CustomerId に追加します
- 顧客を再度保存する
私の目標:
/Customer/Create/ -> 新しい CustomerViewModel-Object を作成し、InvoiceViewModel (CustomerViewModel のプロパティ) にバインドされたグリッド付きのビューを表示します。
.DataBinding(dataBinding => dataBinding
.Ajax()
.Insert("InsertInvoice", "Customer")
ajax-Method は次のように動作する必要があります。
private CustomerViewModel myCustomerViewModel;
public ActionResult Create()
{
this.myCustomerViewModel = new CustomerViewModel();
this.myCustomerViewModel = new List<InvoiceViewModel>();
return View(this.myCustomerViewModel);
}
[AcceptVerbs(HttpVerbs.Post)]
[GridAction]
public ActionResult InsertInvoice(InvoiceViewModel newInvoice)
{
this.myCustomerViewModel.Invoices.Add(newInvoice)
return View(new GridModel(this.myCustomerViewModel.Invoices));
}
最後に、新しい顧客を作成するために「作成」ボタンをクリックすると、DBに保存されます。
「InsertInvoice」メソッドを呼び出すと、myCustomerViewModel が NULL になるため、行き詰まっています。
考え?
敬具、デイブ