Asp.net mvc 在MVC中从gallary中选择图像

Asp.net mvc 在MVC中从gallary中选择图像,asp.net-mvc,Asp.net Mvc,我试图让用户选择一个图像,并添加一些额外的信息 我有一个保存额外信息的对象-让我们保持简单,说它的两个字符串-和一个图像 [Table("ImageInfo")] public class ImageInfo { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int ImageInfoId { get; set; } public string Name {

我试图让用户选择一个图像,并添加一些额外的信息

我有一个保存额外信息的对象-让我们保持简单,说它的两个字符串-和一个图像

[Table("ImageInfo")]
public class ImageInfo
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ImageInfoId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public Image Image { get; set; }
}

[Table("Image")]
public class Image
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int IamgeId { get; set; }
    public byte[] ImageBytes { get; set; }
}
对于Create视图,我想向用户显示两个文本字段和数据库中所有现有IAMGE的“gallary”类型布局

我希望iamge gallary部分是一个局部视图,这样我也可以在其他地方重用它

我不知道如何显示图像,也不知道用户在控制器中选择了哪一个来链接它们。我认为这将需要一些视图特定的模型,但除此之外,我画一个空白

有人能给我指一下正确的方向吗


注:将ImageInfo和ImageInfo存储在单独的表中的原因是每个图像都有许多ImageInfo。

是。您需要一些视图特定的模型。我们称之为ViewModels。它们是要在视图中使用的简单POCO类。因此,让我们为我们的场景创建其中两个

public class AddUserImageViewModel
{
  public int UserId { set;get;}
  public List<ImageViewModel> AvailableImages { set;get;}
  public string Name { set;get;}
  public string Description { set;get;}  
  public int SelectedImageID { set;get;}
}    
public class ImageViewModel
{
  public int ID { set;get;}
  public string Name { set;get;}
  public string Description { set;get;}
  public string URL { set;get;}  
}
现在,我们的视图将被强类型化为viewmodel

public ActionResult AddImage()
{
  var vm=new AddUserImageViewModel();
  vm.AvailableImages =repositary.GetAvailableImages();
  return View(vm);
}
@model AddUserImageViewModel
<h2>Add image to profile</h2>
@using(Html.Beginform())
{   
  @Html.HiddenFor(m=>m.SelectedImageID)
  <input type="submit" />
}
@{ Html.RenderPartial("AvailableImages",Model.AvailableImages);  }
添加一些jquery代码,以便当用户选择图像时,获取图像id并将其设置为表单中的隐藏变量(
SelectedImageID
),以便在发布表单时可用

@model List<ImageViewModel>
@foreach(var item in Model)
{
  <img src=@item.URL" id=@item.ID" alt="@item.Name" class="imgItem" />
}