2014-11-12 4 views
0

사용자 등록 페이지가 있으며 사용자 계정을 만들고 있습니다. 이미지를 바이트로 저장하는 대신 서버에 저장합니다. 따라서 컨트롤러에는 Create 컨트롤러와 UploadImage 컨트롤러가 있습니다. 데이터베이스에 특정 계정의 서버에서 특정 이미지를 가져와야한다는 것을 알 수 있도록 이미지에 지정된 키가 어떻게 할당되는지에 대한 아이디어를 얻지 못하고 있습니까? 키가 이미지에 저장되는 방법에 대한 아이디어가 없습니다.ASP .NET MVC에서 다른 컨트롤러의 키 MVC

활동 작성 :

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Create([Bind(Include = "studentId,firstName,middleName,lastName,dateOfBirth,country,emailAddress,userName,userPassword,confirmPassword,university")] Student student) 
     { 

      if (ModelState.IsValid) 
      { 
       var salt = Crypto.GenerateSalt(); 
       var saltedPassword = student.userPassword + salt; 
       var hashedPassword = Crypto.HashPassword(saltedPassword); 
       student.userPassword = hashedPassword; 
       student.confirmPassword = hashedPassword; 
       student.salt = salt; 
       db.Students.Add(student); 
       db.SaveChanges(); 
       return RedirectToAction("UploadImage"); 
      } 

      return View(student); 
     } 

업로드 이미지 조치 :

[HttpPost] 
     public ActionResult Upload(HttpPostedFileBase photo) 
     { 
      string path = @"~/Content/profileImage"; 

      if (photo != null) 
       photo.SaveAs(path + photo.FileName); 

      return RedirectToAction("Index"); 
     } 

모두에 대한 나의 모델은 즉, 다른 모든 변수가 동일하고 이미지가 동일 모델 :

public class Student 
    { 
     public int studentId { get; set; } 

     [Required(ErrorMessage = "First Name is required")] 
     [Display(Name="First Name*")] 
     public string firstName { get; set; } 

     [Display(Name = "Middle Name")] 
     public string middleName { get; set; } 

     [Display(Name = "Last Name*")] 
     [Required(ErrorMessage = "Last Name is required")] 
     public string lastName { get; set; } 

     public DateTime dateOfBirth { get; set; } 

     [FileSize(10240)] 
     [FileTypes("jpg,jpeg,png")] 
     public HttpPostedFileBase image { get; set; } 
} 
+0

어떻게 같을 것이다 이것에 대한 컨트롤러 액션을 생성하기 위해

public class Student { Image image { get; set; } } 

나는 1 명의 동일한 ID를 위해 2 개의 다른 컨트롤러를 연결합니까? –

답변

0

이미지 모델에서 데이터베이스에 사용할 키를 지정해야합니다. 예를 들어 :

public class Image { 

    [Key] 
    public int Id { get; set; } 

} 

그런 다음 학생 클래스는 선언 할 수 있습니다 다음은

[HttpGet] 
    public ActionResult(int id) 
    { 
     //Method to query image models by id 

    return View(model); 

} 
+0

나는 그것들을 같은 모델에 가지고있다. 이미지에 다른 모델을 가지고 있지 않다. –

+0

이미지 클래스에 다른 모델이 없어도 데이터베이스의 이미지에 대해 별도의 키를 가질 방법이 없습니다. 오직 하나의 기본 키. 별도의 클래스를 만들고 이미지 ID와 같은 이미지 클래스가 필요한 경우 현재 클래스와의 관계를 만들 것을 제안합니다. 그들이 정확하게 동일한 모델에 있다면 나는 당신을 정확하게 이해하고 희망 – geekonedge

+0

그래서 나는 링크를 설정할 수 있습니까? 그건 그렇고, 이미지를 서버에 저장하는 것이지 데이터베이스가 아닌 바이트로 저장하는 것입니다. –

관련 문제