Я пишу приложение, используя 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; }
}