2013-05-13 65 views
0

嗨,我有以下視圖模型:MVC剃刀格式回傳視圖模型使用GROUPBY

public class VehiclesViewModel 
    { 
     public IList<Vehicle> Vehicles{ get; set; } 
    } 

車輛:

public class Vehicle 
{ 
    public Owner Owner { get; set; } 
    public Make Make { get; set; } 
    public string Status { get; set; } 
} 

現在的Razor視圖:

@model VehiclesViewModel 

    <table> 
     <thead> 
     <tr> 
      <th>Owner</th> 
      <th>Make</th> 
      <th>Model</th> 
     </tr> 
     </thead> 
     <tbody> 
    @for(int i=0; i<Model.Vehicles.Count; i++) 
    { 

     <tr> 
      <td>@Vehicle[i].Owner</td> 
      <td>@Vehicle[i].Make</td> 
      <td>@Html.EditorFor(x => x.Vehicles[i].Status)</td> 
     </tr> 

    } 
    </tbody> 
</table> 

所以現在我有一個觀點,我可以顯示和改變車輛的狀態,並將其發回給控制器沒有問題。

但是,我現在有一個新的要求,在由車主分組的頁面上顯示車輛。所以,我想出了:

@model VehiclesViewModel 

<table> 
    <thead> 
    <tr> 
     <th>Make</th> 
     <th>Model</th> 
    </tr> 
    </thead> 
    <tbody> 
@foreach(var vehicleGroup in @Model.Vehicles.GroupBy(x => x.Owner.Name)) 
{ 
    <tr> 
    <td colspan="2">@vehicleGroup.First().Owner.Name</td> 
    </tr> 
    foreach(var vehicle in vehicleGroup) 
    { 

     <tr> 
     <td>@vehicle.Make.Name</td> 
     <td>Need to provide a way to edit the status here</td> 
     </tr> 

    } 
} 
</tbody> 
</table> 

的問題是,現在我有這樣的foreach的語法,而不是因爲我不知道怎麼寫和編輯狀態。

任何人都可以幫助我嗎?

回答

0

也許只是用一個簡單的輸入標籤:

<input type="text" name="[email protected]"value="@vehicle.Status" /> 
1
@foreach(var vehicleGroup in Model.Vehicles.GroupBy(x => x.Owner.Name)) 
{ 
    <tr> 
     <td colspan="2">@vehicleGroup.First().Owner.Name</td> 
    </tr> 

    foreach(var vehicle in vehicleGroup) 
    { 
     <tr> 
       <td> @vehicle.Make.Name </td> 
       <td> @Html.EditorFor(m => vehicle.Status) </td> 
     </tr>  
    } 
} 

不過,我建議你的分組,而不是控制器的視圖中的列表。