2010-09-13 115 views
0

如果我有一個由嵌套複雜類型組成的對象,例如具有List<Fu>List<Bar>模型綁定複雜嵌套類型的HTML命名約定是什麼?

public class WarViewModel 
{ 
    List<Fu> Fu { get; set; } 
    List<Bar> Bar { get; set; } 
} 

public class Fu 
{ 
    public int Id {get;set;} 
    public Soldier Private { get; set; } 
} 

public class Bar 
{ 
    public int Id {get;set;}   
    public Soldier Private { get; set; } 
} 

public class Soldier 
{ 
    public int Id {get;set;} 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

一個視圖模型,如果我有一個form包含2名select名單,無論是與富或酒吧,其中每個option代表列表中的每個士兵,並選擇了包含標識屬性,姓名和年齡,如

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<WarViewModel>" %> 

<% using (Html.BeginForm("WarAction", "War")) { %>   
    <% foreach (var soldier in Fu) %> 
     <select class="fu"> 
      <option id='<%= soldier.Id %>' age='<%= soldier.Age %>'><%= soldier.Name %></option> 
     </select> 
    <% } %> 

    <% foreach (var soldier in Bar) %> 
     <select class="bar"> 
      <option id='<%= soldier.Id %>' age='<%= soldier.Age %>'><%= soldier.Name %></option> 
     </select> 
    <% } %>   
<% } %> 

什麼命名約定,我需要使用,這樣在提交表單的時候,下面的操作方法的WarViewModel將與在兩個列表中選擇的士兵填充?

public ActionResult WarAction(WarViewModel war) 
{ 
    return View(); 
} 

我現在的理解是模型活頁夾不會知道士兵是哪個,所以它不知道哪個id與哪個士兵有關。有沒有辦法讓我解決這個問題?我知道上面的代碼不會驗證,但我試圖爲自己實現一個概念驗證。

此外,需要改變哪些方法使此方法成爲RESTful?

回答