2011-06-22 196 views
3

我在綁定到對象列表的同時綁定到對象時遇到問題。 在工具更新中使用Mvc3.1。ASP.NET MVC:模型綁定複雜類型

當綁定到類Form時,HttpPost-函數接收正確的模型。 當綁定到FormViewModel時,HttpPost-函數接收一個空模型。

綁定包含其他模型的模型時是否有任何限制?

public class FormViewModel 
{ 
    public Form Form { get; set; } 
} 

public class Form 
{ 
    public List<Section> Sections { get; set; } 
} 

public class Section 
{ 
    public List<Question> Questions { get; set; } 
} 

public class Question 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
} 

回答

2

輸入元素的名稱屬性是聯編程序用作上下文來執行其魔術的內容。我的猜測是,您的視圖包含這樣的事情:

@model Form 
@Html.EditorFor(m => m.Sections) 

和信件的方法是這樣的:如果你改變你的看法

[HttpPost] 
public ActionResult Function(FormViewModel formViewModel) 
{ 
    // ... 
} 

是:

@model FormViewModel 
@Html.EditorFor(m => m.Form.Sections) 

和你獲取操作返回FormViewModel的一個實例,它可能會工作得很好。助手將使用lambda表達式的主體來創建輸入元素的名稱。在這種情況下,它會創建類似Form.Sections[0].Field。然後,模型聯編程序可以在Form.Sections []上選取並正確初始化FormViewModel。