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" />
}