파일을 데이터베이스에 저장하는 MVC 3 프로젝트에 업로드 기능이 있습니다. 각각의 파일을 다운로드 할 링크가있는 데이터베이스의 모든 파일을 나열하는 코드를 작성하려고하지만 많은 성공을 거두지 못했습니다.업로드 된 파일 다운로드 MVC 3
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 지수와 뷰의 코드에서보기를 만들었습니다됩니다 : 다음은 컨트롤러 코드는 나는 또한에 제공 FileViewModel라는 클래스 파일을 생성 한
@Html.ActionLink("Lesson", "Download", "Upload", new { id = 1 })
파일이 나열 될 때 데이터가 데이터베이스에서 검색되지 않도록 :
public class FileViewModel
{
public int ID { get; set; }
public string Name { get; set; }
}
내가 파일을 나열합니다 다운로드보기
, 내가 가진 :@model IEnumerable<DFPProductions_Default.Models.FileViewModel>
내가 링크를 클릭 할 때 내가 갖는 오류 : 매개 변수 사전이 아닌 nullable 형식 방법 '선택 System.Int32' 'System.Web의 매개 변수'ID '에 대한 널 항목이 포함되어 있습니다. DFPProductions_Default.Controllers.UploadController '에서 Mvc.ActionResult Download (Int32)를 클릭하십시오.
내가 잘못 한 것을 발견하도록 도와주세요. 감사합니다, Amy
이봐, 고마워. 오류가 변경되었습니다. 이 코드는 컨트롤러에서 'code'return File (file.Data.ToArray(), "application/octet-stream", file.Name)'code '코드를 강조 표시합니다. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 왜 그런지 알아? 감사합니다 :) – Amy
파일을 반환하기 전에 코드를'var file = db.UserFiles.FirstOrDefault (f => f.ID == id);'로 변경 한 다음'if (file! = null)'을 수행하십시오. Id가 DB에없는 항목이 있으므로 –
좋아요, 지금은 고마워요. :) ID에 상관없이 데이터베이스의 모든 파일을 나열하려면 어떻게해야합니까? 루프? 내가 정말로하고 싶은 일은 특정 사용자 (누가 역할이 할당되었는지)가 특정 파일을 볼 수있게하는 것입니다. 그것은 음악 학교를위한 것입니다. 그래서 기타 학생들은 예를 들어 기타 수업 만 볼 수 있습니다. 다운로드 ActionResult에 IsInRole 코드를 넣을 수 있습니까? 감사! – Amy