ASP.NET MVC - 如何将数组传递给视图?

问题描述:

我在这里苦苦挣扎,找到一种简单的方法将数组从控制器传递到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,可能是因为对数组类型的声明,但不幸的是,我不知道如何正确,只是通过它没有创造数百万的代码行。

如果有人能帮助我,那将是太棒了。

在此先感谢

您需要在浏览投

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

感谢您的敏捷,您确实非常敏捷! 正是我想要的。干杯 – zanona 2009-09-10 14:40:40

这应该由视图的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

您可以使用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>