Telerik MVC Ajax Grid - 在保存到DB之前将ViewModel添加到其他ViewModel

时间:2012-07-04 10:13:45

标签: telerik-grid telerik-mvc

假设我有2个型号:

客户(ID,名称)< [0..1 - *]>发票(ID,名称,价值)。

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

我的解决方案是:

  1. 创建客户(默认名称为“ - ”)
  2. 保存到db
  3. 阅读CustomerId
  4. 将发票添加到此CustomerId
  5. 再次保存客户
  6. 我的目标:

    /客户/创建/ - >创建一个新的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。

    主意?

    最好的问候, 戴夫

1 个答案:

答案 0 :(得分:0)

问题解决了,但我不知道它是否“干净”,但是:

旧:

private CustomerViewModel myCustomerViewModel;

现在:

public CustomerViewModel CurrentCustomer
{
    get
    {
        return (CustomerViewModel )Session["CurrentCustomer"];
    }
    set
    {
        Session["CurrentCustomer"] = value;
    }
}