我有一个Assignment模型,它将StudentName和.zip文件(以及其他项目)存储到数据库中。我已经测试了我的Create方法,它设法创建了Assignment并选择了相应的File并将其上传到数据库进行存储。那部分工作正常。我无法在View中将存储的文件显示为可下载的链接。
以下是数据库的设置方式。
作业表:
文件表:
Files表中的File通过外键关系将关系与Assignment相关联,其中AssignmentId存储在数据库的每个File条目中。
当我运行它并创建一个Assignment并查看数据库中的表值时,我可以看到正在上载和存储文件并创建了关系。以下是我的模型的外观。
作业模式:
namespace ProjectVoting.Models
{
public class Assignment
{
[Key]
public int Id { get; set; }
public string StudentName { get; set; }
public int Votes { get; set; }
public virtual ICollection<File> Files { get; set; }
}
}
文件模型:
namespace ProjectVoting.Models
{
public class File
{
public int FileId { get; set; }
[StringLength(255)]
public string FileName { get; set; }
[StringLength(100)]
public string ContentType { get; set; }
public byte[] Content { get; set; }
public FileType FileType { get; set; }
public int AssignmentId { get; set; }
public virtual Assignment Assignment { get; set; }
}
}
FileType类:
namespace ProjectVoting.Models
{
public enum FileType
{
Project = 1, ZipFile
}
}
在Assignment模型的Index视图中,我试图显示StudentName,File和Edit / Details / Delete链接的列表。以下是我设置视图的方法。
作业/索引视图:
@model IEnumerable<ProjectVoting.Models.Assignment>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.StudentName)
</th>
<th>
@Html.DisplayNameFor(model => model.Votes)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.StudentName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Votes)
</td>
<td>
@Html.DisplayFor(modelItem => item.Files)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
}
</table>
注意,我使用@ Html.DisplayFor(modelItem =&gt; item.Files)尝试从数据库中显示文件的下载链接。但是,当我到达索引页面时,它显示为:
在表格中显示数据库中可下载链接的正确方法是什么?