使用强类型模型在控制器和视图之间传递数据
本文关键字:之间 视图 数据 控制器 强类型 模型 | 更新日期: 2023-09-27 18:06:20
控制器和视图之间的通信有一点问题。
还是(类):
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>();
}
}
Controller:(我用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");
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
时,我不能去列表的一些索引内的文件(我有那里的UploadFile实例)。
我需要在foreach
声明:foreach var item in model.list
,但它不让我,我怎么能做到这一点?
我的主要目标是简单地在表中显示关于模型列表("文件")中每个UploadFile的详细信息。
我该怎么做呢?
是的,如果你需要使用Files
中定义的.list
属性并且你需要将视图模型更改为简单的
@model SelectorITSelectorIT.Models.Files
...
@foreach (var item in Model.list) {
<tr>
<td>@item.Name</td>
</tr>
}
另一方面,如果你真的需要一个IEnumerable of Files,你需要像这样重写你的循环:
@foreach (var item in Model) {
foreach(var file in item.list)
{
<tr>
<td>@file.Name</td>
</tr>
}
}
但是根据你的问题,我认为你真的只是想要一个Files
的模型,因为它已经有UploadFiles
的列表在里面。
你说"我不能到列表的某个索引内的文件"
你不能索引一个foreach循环,如果你想显示一个特定范围的索引,你需要使用For循环,
for (int i = 0; i < Model.list.Count; i++)
{
@Html.LabelFor(x => Model.list[i].Name)
}