0

2つのモデルがあるとしましょう:

顧客 (ID,名前) <[0..1 - *]> 請求書 (ID,名前,値)。

ここで、Route /Customer/Create により、新しい顧客 (名前用の 1 つのテキスト ボックス) を作成し、顧客に請求書を追加する TelerikGrid の下に作成できます。

私の解決策は次のとおりです。

  1. 顧客の作成 (「-」などのデフォルト名)
  2. データベースに保存
  3. CustomerId を読み取る
  4. 請求書をこの CustomerId に追加します
  5. 顧客を再度保存する

私の目標:

/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 になるため、行き詰まっています。

考え?

敬具、デイブ

4

1 に答える 1

0

問題は解決しましたが、それでも「クリーン」かどうかはわかりません。

年:

private CustomerViewModel myCustomerViewModel;

今:

public CustomerViewModel CurrentCustomer
{
    get
    {
        return (CustomerViewModel )Session["CurrentCustomer"];
    }
    set
    {
        Session["CurrentCustomer"] = value;
    }
}
于 2012-07-04T11:56:43.167 に答える