1

我是 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)]
    ]
]

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

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

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

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

有什么想法我哪里出错了吗?

编辑:这是解决方法,感谢大家促使我走上正确的道路:)

控制器:

ViewBag.Images = Media.Images;

网络配置:

<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);
4

1 回答 1

1

我假设Media.Images.ToArray();给你一个对象数组MyImage

我的形象

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

然后是剃刀代码:

@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>

     ...
}
于 2012-09-04T15:32:30.590 回答