2010-08-19 67 views
1

我有一個對象(Object1),它包含一個子對象(Child)。因此,您可以通過Object1.Child訪問該孩子。在我的ASP.NET MVC2項目中,我收到了對create方法的POST回覆。 FormCollection包含Object1和Child對象的屬性。我似乎無法使用「TryUpdateModel」函數來更新子對象。如何獲得TryUpdateModel來更新也在Asp.net MVC2中的子對象

[HttpPost] 
    public ActionResult Create(FormCollection collection) 
    { 
     Object1 obj = new Object1(); 
     obj.Child = new Child(); 
     if (TryUpdateModel<Object1>(obj, "Object1", new[] { "ObjectName", "Child.ChildName" })) 
     { 
      // At this point, "ObjectName" is filled in, but "Child.ChildName" is not. 
      context.Object1s.AddObject(obj); 
      context.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(new Object1_ViewModel(obj)); 
    } 

任何幫助表示讚賞。

+1

這已經直接支持,如果'POST'包含足夠的數據來兌現孩子。你的顯然不是。 – 2010-08-19 14:23:54

回答

1

如果你有一個強類型的視圖,你可以嘗試做一些像

public ActionResult Create(Object1 obj) 

我不是正面的,如果默認的模型綁定將攜帶任何子對象通過。如果這不起作用,您可能需要推出自己的模型活頁夾。見你如何編寫一個下面的鏈接:

http://www.codethinked.com/post/2009/01/08/ASPNET-MVC-Think-Before-You-Bind.aspx

http://www.codethinked.com/post/2010/04/12/Easy-And-Safe-Model-Binding-In-ASPNET-MVC.aspx

ASP.NET MVC2 - Custom Model Binder Examples

http://codeisvalue.wordpress.com/2010/02/10/customizing-model-binder-in-asp-net-mvc/

相關問題