ASP.Net MVC显示存储的.zip文件并允许从数据库下载

时间:2016-12-04 05:00:25

标签: c# asp.net-mvc

我有一个Assignment模型,它将StudentName和.zip文件(以及其他项目)存储到数据库中。我已经测试了我的Create方法,它设法创建了Assignment并选择了相应的File并将其上传到数据库进行存储。那部分工作正常。我无法在View中将存储的文件显示为可下载的链接。

以下是数据库的设置方式。

作业表:

enter image description here

文件表:

enter image description here

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)尝试从数据库中显示文件的下载链接。但是,当我到达索引页面时,它显示为:

enter image description here

在表格中显示数据库中可下载链接的正确方法是什么?

0 个答案:

没有答案