2012-09-13 25 views
0

大家好如何通過兩個或兩個以上的IEnumerables列表來查看?這裏是我的動作控制器:如何在MVC3中使用兩個IEnumerables

ServicesClient client = new ServicesClient(); 
client.ClientCredentials.UserName.UserName = "service_test"; 
client.ClientCredentials.UserName.Password = ".."; 
      client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; 

      ListCity[] city = client.GetCity(); 
      ListStreet[] street = client.GetStreet(2); 

      return View(city); 

而我的觀點:

model IEnumerable<ListCity> 

@using icerik.EmlakServices 
@{ 

    Layout = "~/Views/Shared/Test.cshtml"; 
} 


<select> 

@foreach(var item in Model) 
{ 

    <option>@Html.DisplayFor(x => item.CityName)</option> 
} 
</select> 

回答

1

你必須在這種情況下創建一個視圖模型。因此,像這樣:

public class MyViewModel{ 
    public ListCity[] City {get;set;} 
    public ListStreet[] Street {get;set;} 
} 

然後在你的控制器:

var viewmodel = new MyViewModel{ 
        City = client.GetCity(), 
        Street = client.GetStreet(2) 
       }; 
return View(viewModel); 

然後在您的視圖:

model MyViewModel 

然後你就可以得到集合在你看來像Model.City,或Model.Street

對於除了非常基本的情況以外的所有情況,通常最終會爲幾乎所有的視圖創建一個ViewModel。所以請正確命名,以便你知道他們在做什麼。我在示例中將其稱爲MyViewModel,因爲我不知道上下文。

此外,我將其命名爲變量CitiesStreets,因爲它們是集合,而不僅僅是單個元素。

+0

喜歡它!非常感謝你 – Teodoris

相關問題