Как я могу прочитать адрес электронной почты из таблицы ASPNetUsers и использовать во второй таблице в Visual Studio 2019 MVC - PullRequest
0 голосов
/ 04 июня 2019

Я пишу приложение, используя VS2019 EF. Я хотел бы иметь возможность загружать изображения и хранить их в таблице в моем LocalDB (на данный момент). Я хочу использовать адрес электронной почты из таблицы AspNetUsers, чтобы определить, кто загрузил какое изображение.

Кроме того, я попытался включить Id из этой таблицы в качестве внешнего ключа в мою новую таблицу, не зная, где он ошибся, но Id не загружен в мою таблицу изображений (проблема 1). Также я пытаюсь сохранить адрес электронной почты вошедшего в систему пользователя в этой новой таблице, чтобы позже я мог идентифицировать изображения. Текущий пользователь сохраняется в дБ, но когда я использую страницу просмотра индекса EF, чтобы предоставить мне список изображений, он заменяет электронную почту из базы данных текущим вошедшим пользователем (администратор, поскольку это страница только администратора) ).

Это мой класс:

 public class ImagesUpload
 {
  //  ApplicationUser user = new ApplicationUser();

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ImagesUploadID { get; set; }

    public string Id{ get; set; }  
    public virtual ApplicationUser ApplicationUser { get; set; }

    //(supposed to set the foreign key, but nothing is loaded into the db)

    private string email;
    public string Email
    {
        get
        {

            return email = HttpContext.Current.User.Identity.Name;
        }
        //set
        //{
        //    email = value;
        //}

    }

    [Required]
    [Display(Name ="Select your image type ")]
    public string ImageType { get; set; }

Вот мой индекс Просмотр кода:

 @foreach (var item in Model) {
 <tr>
   <td>
    @Html.DisplayFor(modelItem => item.Email)
   </td>
 <td>
    @Html.DisplayFor(modelItem => item.ImageType)
 </td>

Это моя таблица локальной базы данных:

ImageID Id      Title    Path                                   Score  ImageType Email
1024    NULL    ladybug ~/Images/Colour/ASurfersPlayground.jpg  0   Colour  maria@mail.com
1025    NULL    test    ~/Images/Mono/Butterfly.jpg 0   Mono    maria@mail.com
1026    NULL    test    ~/Images/Theme/ladybug.jpg  0   Theme   NULL
1027    NULL    ladybug ~/Images/Mono/Butterfly.jpg 0   Mono    maria@mail.com
NULL    NULL    NULL    NULL    NULL    NULL    NULL

Представление индекса выглядит следующим образом (извините, только что позволил мне скопировать текст):

Index
Create New

Email   Select your image type  Image 1 Title   Select Image 1
admin@mail.com  Mono    testing ~/Images/Mono/southwall.jpg

Из отладки я знаю, что адрес электронной почты из БД перезаписывается, так как я использую HttpContext.Current.User.Identity.Name в модели, но я не знаю, как еще получить электронную почту в БД для каждого пользователь.

Извините, вот данные контроллера

    [HttpPost]
    [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "image1Title,image1Path, imageType")]ImagesUpload imagesUpload, HttpPostedFileBase Image1File)
    {
        try
        {
            int colour = 0;
            int mono = 0;
            int theme = 0;

            if (ModelState.IsValid)
            {

                switch (imagesUpload.ImageType)
                {
                    case "Colour":
                        {
                            if (colour < 2)
                            {
                                if (Image1File != null && Image1File.ContentLength > 0)
                                {
                                    string colour1filename = Path.GetFileNameWithoutExtension(Image1File.FileName);
                                    string colour1extension = Path.GetExtension(Image1File.FileName);
                                    colour1filename = colour1filename + DateTime.Now.ToString("yymmssfff") + colour1extension;
                                    imagesUpload.Image1Path = "~/Images/Colour/" + colour1filename;
                                    colour1filename = Path.Combine(Server.MapPath("~/Images/Colour/"), colour1filename);
                                    Image1File.SaveAs(colour1filename);

                                    db.ImagesUploads.Add(imagesUpload);
                                    colour++;

                                    db.SaveChanges();

                                }
                            }
                            else
                            {
                                ViewBag.Message = "You have already uploaded two colour images"; 
                            }
                            break;
                        }


                    case "Mono":
                        {
                            if (mono < 2)
                            {

                                if (Image1File != null && Image1File.ContentLength > 0)
                                {
                                    string mono1filename = Path.GetFileNameWithoutExtension(Image1File.FileName);
                                    string mono1extension = Path.GetExtension(Image1File.FileName);
                                    mono1filename = mono1filename + DateTime.Now.ToString("yymmssfff") + mono1extension;
                                    imagesUpload.Image1Path = "~/Images/Mono/" + mono1filename;
                                    mono1filename = Path.Combine(Server.MapPath("~/Images/Mono/"), mono1filename);
                                    Image1File.SaveAs(mono1filename);

                                    db.ImagesUploads.Add(imagesUpload);
                                    mono++;

                                    db.SaveChanges();

                                }

                            }
                            else
                            {
                                ViewBag.Message = "You have already uploaded two mono images";
                            }
                            break;
                        }

                    case "Theme":
                        {
                            if (theme < 2)
                            {
                                if (Image1File != null && Image1File.ContentLength > 0)
                                {
                                    string theme1filename = Path.GetFileNameWithoutExtension(Image1File.FileName);
                                    string theme1extension = Path.GetExtension(Image1File.FileName);
                                    theme1filename = theme1filename + DateTime.Now.ToString("yymmssfff") + theme1extension;
                                    imagesUpload.Image1Path = "~/Images/Theme/" + theme1filename;
                                    theme1filename = Path.Combine(Server.MapPath("~/Images/Theme/"), theme1filename);
                                    Image1File.SaveAs(theme1filename);

                                    db.ImagesUploads.Add(imagesUpload);

                                    theme++;
                                    db.SaveChanges();

                                }
                            }
                            else
                            {
                                ViewBag.Message = "You have already uploaded two theme images";
                            }
                            break;
                        }
                }
                return RedirectToAction("AnotherImage");
            }

и мой dbcontext

  public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
   {
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    public System.Data.Entity.DbSet<B8IT130_10374500.Models.ImagesUpload> ImagesUploads { get; set; }

    public System.Data.Entity.DbSet<B8IT130_10374500.Models.Contact> Contacts { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...