我是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);
答案 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>
...
}