我在控制器和视图之间进行通信时遇到了一些问题。
UploadFile (Class):
public class UploadFile
{
public string OrignialFilePath { get; set; }
public string FilteredFilePath { get; set; }
public string Name { get; set; }
public UploadFile(string x, string y, string z)
{
OrignialFilePath = x;
FilteredFilePath = y;
Name = z;
}
}
文件(类):
public class Files
{
public List<UploadFile> list { get; set; }
public Files()
{
list = new List<UploadFile>();
}
}
控制器:(我通过HTTP POST获取文件到此控制器)
Files fileList = new Files();
foreach (var file in Files)
{
UploadFile fu = new UploadFile(file.x, file.y, file.z);
fileList.list.Add(fu);
}
return RedirectToAction("Result");
结果:(强类型视图)
@model IEnumerable<SelectorITSelectorIT.Models.Files>
@{
ViewBag.Title = "Result";
}
<h2>SelectorIT - Result</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th></th>
</tr>
@foreach ( var item in Model) {
<tr>
<td>
@item.list ?????
</td>
</tr>
}
</table>
在foreach var item in model
当我写@item.list
时,我无法转到列表某些索引中的文件(我有上传文件实例)。
我需要foreach
声明:foreach var item in model.list
但它不会让我,我该怎么办?
我的主要目标是在表格中简单地显示模型列表中每个UploadFile的详细信息(&#34; Files&#34;)。
我该怎么办?
答案 0 :(得分:1)
是的,我需要使用您在.list
中定义的Files
属性,并且需要将视图模型更改为
@model SelectorITSelectorIT.Models.Files
...
@foreach (var item in Model.list) {
<tr>
<td>@item.Name</td>
</tr>
}
另一方面,如果你真的想要一个IEnumerable的文件,你需要重写你的循环,类似于:
@foreach (var item in Model) {
foreach(var file in item.list)
{
<tr>
<td>@file.Name</td>
</tr>
}
}
但根据您的问题,我认为您真的只想要Files
的模型,因为它已经包含UploadFiles
的列表。
答案 1 :(得分:1)
你说“我不能去列表的某个索引中的文件”
如果要显示需要使用For循环的特定索引范围,则无法索引foreach循环,
for (int i = 0; i < Model.list.Count; i++)
{
@Html.LabelFor(x => Model.list[i].Name)
}