2014-11-12 3 views
0

У меня есть страница регистрации пользователя, и я создаю учетную запись пользователя. Вместо хранения изображения в виде байтов я храню его на сервере. Итак, в моем контроллере у меня два разных действия: Create() и UploadImage() в контроллере регистра. Я не понимаю, как ключ, назначенный для изображения, позволяет базе данных знать, что он должен вытащить определенное изображение с сервера для определенной учетной записи? Я не понимаю, как ключ хранится для изображения?Ключи для разных контроллеров в ASP.NET 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

Как может Я связываю два разных контроллера для одного идентификатора? –

ответ

0

В вашей модели изображения вам нужно указать ключ, который будет использоваться в базе данных. Например:

public class Image { 

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

} 

Тогда в классе студентов вы можете заявить следующее:

public class Student { 

    Image image { get; set; } 

} 

Для того, чтобы создать действие контроллера для этого он будет выглядеть примерно так

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

    return View(model); 

} 
+0

У меня их на той же модели, у меня нет другой модели для изображения. –

+0

Не имея другой модели для класса изображения, нет никакого способа иметь отдельный ключ для изображения в базе данных. Только один первичный ключ. Я бы предложил создать отдельный класс и создать связь между изображением и текущим классом, если вам нужен идентификатор изображения как таковой. Надеюсь, я правильно понимаю вас – geekonedge

+0

, поэтому я не могу установить ссылку, если они находятся в одной и той же модели? Кстати, храня изображения на сервере, а не в базе данных в виде байтов. –

Смежные вопросы