0

假设我有 2 个模型:

客户(ID、姓名)<[0..1 - *]> 发票(ID、姓名、值)。

现在,Route /Customer/Create 允许我在 TelerikGrid 下方创建一个新客户(名称的一个文本框),它将发票添加到客户。

我的解决方案是:

  1. 创建客户(使用默认名称,例如“-”)
  2. 保存到数据库
  3. 读取客户 ID
  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));
} 

最后,当我单击“创建”按钮创建新客户时,它应该将其保存到数据库。

现在我卡住了,因为当我调用“InsertInvoice”-Method 时,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 回答