2014-03-29 44 views
4

我是mvc4的新手,所以請放心,我試圖從控制器將多個目標名稱傳遞給我的視圖。我怎樣才能做到這一點,而無需創建更多的動作結果和對象。我想使用字符串數組創建一個包含目標名稱的表。這是可能的任何幫助,將不勝感激。先謝謝你。如何將字符串數組從控制器傳遞給視圖MVC4而不創建多個動作結果?

Controller: 
public ActionResult Destinations()  
{   
    string[] arrivalAirport = new string[4] { "london", "paris", "berlin", 
                  "manchester" };    

    Destination dest = new Destination();    
    dest.arrivalName = arrivalAirport[2];  

    return View(dest); 
} 

Model: 
public class Destination  
{   
    public string arrivalName { get; set; }  
    public string arrivalCode { get; set; } 
} 

View: 
@model Flight.Models.Destination 

@{ 
    ViewBag.Title = "Destinations"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<table> 
    <tr> 
     <td>@Html.Label("Arrival Name")</td> 
     <td>@Model.arrivalName</td>    
    </tr> 
</table> 

回答

5

你的問題的措辭很混亂,但它聽起來像你想通過多個目標對象到你的視圖。如果是這種情況,只需將多個目標對象傳遞給您的視圖。

控制器:

public ActionResult Destinations()  
{   
    string[] arrivalAirport = new string[4] { "london", "paris", "berlin", 
                  "manchester" };    
    var airports = new List<Destination>(); 

    foreach(var airport in arrivalAirport) 
    { 
     airports.Add(new Destination() { arrivalName = airport }); 
    } 

    return View(airports); 
} 

查看:

@model List<Flight.Models.Destination> 

<table> 
@foreach(var dest in Model) 
{ 
    <tr> 
    <td>Arrival Name</td> 
    <td>@dest.arrivalName</td>    
</tr> 
} 
</table> 
+0

謝謝工作正常,將有可能增加其他信息,如航班號,時間等?是否有可能爲相同的觀點或我將不得不創建另一個動作結果? –

+0

我不確定我是否理解這個問題,但也許這是因爲我不明白爲什麼你不會只是假設你可以繼續添加更多的屬性到目的地發送任何你想要的視圖。附:如果它解決了您的問題,請立即和/或標記爲答案。 –

0

使用視圖模型,你可以定義你需要爲你的視圖的任何信息

public class ViewModel{ 
    public List<string> Airports { get; set; } 
    public Destination destination { get; set; } 
    etc... 
} 

那麼你的控制器上您填充視圖模型

public ActionResult Index(){ 
    ViewModel vm = new ViewModel(); 
    var db = //query your database 
    vm.Destination.arrivalName = db.ArrivalName; 
    etc... 
    return View(vm); 
} 

,並在您的視圖

@model ViewModel 

@Html.TextBoxFor(x => x.Destination.arrivalName) 

Hop efully這有助於

相關問題