将矩形数组传递给视图文件?

时间:2012-09-04 15:23:57

标签: c# asp.net-mvc arrays razor

我是C#/ MVC的相对新手,我在将矩形数组传递给ViewData时遇到了一个问题(然后尝试在View文件中显示内容)。

我的数组是从数据库查询中填充的,据我所知,它已经很好了:

Media [
    Images [
        [Id (int), Type (int), File (string), Title (string)],
        [Id (int), Type (int), File (string), Title (string)],
        [Id (int), Type (int), File (string), Title (string)]
    ]
    Videos [
        [Id (int), Type (int), File (string), Title (string)],
        [Id (int), Type (int), File (string), Title (string)]
    ]
]

我将主要数组(图像和视频)的每一半分配给Controller中的单独ViewData对象:

ViewData["Images"] = Media.Images.ToArray();
ViewData["Videos"] = Media.Videos.ToArray();

View知道这些对象在那里,但我似乎无法弄清楚如何遍历每个数组并从View中访问每个单独的索引(Id,Type,File,Title)并将每个部分添加到View的HTML代码。

一种选择是在控制器中构造HTML,但我真的想避免这种情况。

我出错的任何想法?

编辑:这是解决方法,感谢所有人为推动我走上正轨:)

控制器:

ViewBag.Images = Media.Images;

Web.Config中:

<namespaces>
    <add namespace="Path.to.Models" />
    ...
</namespaces>

查看:

str_code = "<ul>";

foreach (Media image in ViewBag.Images)
{
    str_code += "<li>" + image.Title + "</li>";   
}

str_code += "</ul>";

Response.Write(str_code);

1 个答案:

答案 0 :(得分:1)

我认为Media.Images.ToArray();会为您提供一组MyImage个对象。

<强> MYIMAGE

public class MyImage
{
    public int Id       { get; set; }
    public int Type     { get; set; }
    public string File  { get; set; }
    public string Title { get; set; }
}

然后是Razor代码:

@foreach (MyImage image in ViewData["Images"])
{
    <p>@image.Id</p>
    <p>@image.Type</p>

     ...
}

或者,您可以使用控制器中提供的动态属性ViewBag

ViewBag.Images = Media.Images.ToArray();

然后:

@foreach (MyImage image in ViewBag.Images)
{
    <p>@image.Id</p>
    <p>@image.Type</p>

     ...
}