我在一个MVC3项目中有一个上传功能,它将文件存储在数据库中。我正在尝试编写代码,将列出数据库中的所有文件与下载每个文件的链接,但我没有太大的成功。以下是控制器代码:
public ActionResult Download(int id)
{
var db = GetDataContext();
var file = db.UserFiles.First(f => f.ID == id);
return File(file.Data.ToArray(), "application/octet-stream", file.Name);
}
public ActionResult Index()
{
var db = GetDataContext();
var files = db.UserFiles.Select(f => new FileViewModel { ID = f.ID, Name = f.Name });
return View(files);
}我已经从ActionResult索引创建了一个视图,视图中的代码是:
@Html.ActionLink("Lesson", "Download", "Upload", new { id = 1 })我还创建了一个名为FileViewModel的类文件,用于防止在列出文件时从数据库检索数据:
public class FileViewModel
{
public int ID { get; set; }
public string Name { get; set; }
}在我将列出文件的下载视图中,我有:
@model IEnumerable<DFPProductions_Default.Models.FileViewModel>当我单击该链接时,我得到的错误是:对于'DFPProductions_Default.Controllers.UploadController'.中的方法'System.Web.Mvc.ActionResult Download(Int32)‘,参数字典包含不可为空类型为'System.Int32’的参数'id‘的空条目
请帮我找出我做错了什么。谢谢,艾米
发布于 2011-08-22 20:47:28
问题似乎是您没有向控制器发送任何Id。尝试调用您的操作链接:@Html.ActionLink("Lesson", "Download", "Upload", new { id = 1 }, null)
此外,为了将来的参考,您应该将控制器保持在最低限度,不要与数据库交互。
https://stackoverflow.com/questions/7147506
复制相似问题