2009-09-10 87 views
8

我在這裏苦苦掙扎,找到一種簡單的方法將數組從控制器傳遞到ASP.NET MVC框架的視圖。ASP.NET MVC - 如何將數組傳遞給視圖?

所以在我的控制器我會是這樣的:

public class HomeController : ApplicationController 
{ 
    public ActionResult Index() 
    { 
     string[] myArray = { "value01", "value02", "value03"}; 
     ViewData["passedArray"] = myArray; 
     return View(); 
    } 
} 

所以我認爲我會只是爲了計算機[「passedArray」]呼叫並在其上運行的循環。

但顯然ViewData的正被認爲收到System.String,可能是因爲對數組類型的聲明,但不幸的是,我不知道如何正確,只是通過它沒有創造數百萬的代碼行。

如果有人能幫助我,那將是太棒了。

在此先感謝

回答

12

您需要在瀏覽投

<% var myArray = (string[])ViewData["passedArray"]; %> 
+0

感謝您的敏捷,您確實非常敏捷! 正是我想要的。乾杯 – zanona 2009-09-10 14:40:40

8

這應該由視圖的String []內鑄造計算機[ 「passedArray」。或者,如果您想額外增加英里數:創建一個包含此數組作爲成員的ViewModel類,並將該ViewModel傳遞給您的視圖的強類型版本。

+0

非常感謝大衛·我用鑄造如你所說,它是完美的。 但我喜歡創建一個特定的視圖模型來管理變量的想法。我會盡力讓自己更好地瞭解它。 再次感謝。 – zanona 2009-09-10 14:43:22

+0

選擇ViewModel的原因有很多。 (1)需要演員陣容打開運行時錯誤的大門。 (2)創建ViewModel爲您提供了靈活性,可隨時添加功能,而無需更改視圖的類型。 (3)沒有ViewData [「key」]代碼散佈在您的視圖中,您的代碼會稍微更具可讀性。 – 2009-09-10 15:01:32

+0

大衛,所以你的意思是,如果我創建一個像MyCustomViewModel控制器的新類,並通過這個類像 var myCustomOne = new MyCustomViewModel(); myCustomOne.myArray = new int [] {1,2,3,4} return View(myCustomOne); 我可以在我的視圖中訪問該數組,例如: Model.myArray as int [] 是嗎? – zanona 2009-09-11 12:15:14

0

您可以使用PartialView這樣的:

  • 控制器

    public ActionResult Index() 
        { 
         List<string> arr = new List<string>() { "apple", "banana", "cat" }; 
         return View(arr); 
        } 
    
  • 查看

@model List<string> 
@foreach (var item in Model) { 
     @Html.Partial("~/Views/Shared/Fruits/_myFruits.cshtml", item); 
} 
  • PatialView即_myFruits.cshtml
@model string 
<li>@Model</li> 
相關問題