大家好,所以我想创建一个应用程序使用asp.net mvc的代码第一个数据库,允许用户能够上传和下载图像到目前为止我已经得到它来保存到数据库和显示器,但我有我的控制器的问题,以解决如何让用户下载PDF文件。下载pdf使用asp.net codefirst
目前在控制器中有这些问题
其中强调说PoliciesImageModel不包含其中 的定义。政策加下划线说不能转换PoliciesImageModel为字节
感谢anyhelp这个问题
我正在使用马茨回答,但PoliciesImages和文件不被认可
查看
@model List<MyProject.Models.PoliciesPostVM>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.FileName)
@Html.ActionLink("Download", "PoliciesDownload", new { id = item.ID})
}
控制器
public FileContentResult PoliciesDownload(int ID)
{
if (ID == 0) { return null; }
PoliciesImageModel policies = new PoliciesImageModel();
policies = policies.Where(a => a.ID == ID).SingleOrDefault();
return File(policies, "application/pdf");
}
模型
public partial class PoliciesPostModel
{
public PoliciesPostModel()
{
Pdfs = new List<PoliciesImageModel>();
}
[Key]
[HiddenInput(DisplayValue = false)]
public int ID { get; set; }
[Required(ErrorMessage = "Heading is Required")]
[Display(Name = "File Name")]
public string FileName { get; set; }
public virtual ICollection<PoliciesImageModel> Pdfs { get; set; }
public IEnumerable<HttpPostedFileBase> File { get; set; }
}
public class PoliciesImageModel
{
[Key]
public int ID { get; set; }
public string Path { get; set; }
public virtual PoliciesPostModel Post { get; set; }
public string DisplayName { get; set; }
}
public class PoliciesImageVM
{
public int? ID { get; set; }
public string Path { get; set; }
public string DisplayName { get; set; }
public bool IsDeleted { get; set; }
}
public partial class PoliciesPostVM
{
public PoliciesPostVM()
{
Pdfs = new List<PoliciesImageVM>();
}
public int? ID { get; set; }
public string FileName { get; set; }
public IEnumerable<HttpPostedFileBase> Files { get; set; }
public List<PoliciesImageVM> Pdfs { get; set; }
public IEnumerable<PoliciesPostModel> Posts { get; set; }
}
DbConext
public class EFDbContext: DbContext
{
#region Policies
public DbSet<PoliciesPostModel> PoliciesPosts { get; set; }
public DbSet<PoliciesImageModel> PoliciesImages { get; set; }
#endregion Policies
//other Dbsets are here too....
}
'Where'是LINQ扩展。您需要在'using'语句中引用的相应命名空间将其用作扩展方法。将'使用System.Linq'添加到文件的顶部。你只能在集合对象上使用'Where'。 – mason
你的策略var是ViewModel“PoliciesImageModel”的一个实例,所以你不能执行一个linq查询。看起来不正确? – Wheels73