【发布时间】:2017-01-31 13:10:34
【问题描述】:
大家好,所以我正在尝试使用带有代码优先数据库的 asp.net mvc 创建一个应用程序,该数据库允许用户创建包含任意数量图像的博客文章。我将数据存储在数据库,但我目前正在尝试在显示视图中显示头部、身体和图像,这就是我希望它看起来的样子:http://imgur.com/a/IR19r 但我不确定如何实现这一点。我可以显示头部和身体但无法从图像表中获取图像这里是数据库图:http://imgur.com/a/lvwti
目前这是我将其添加到视图 @Html.DisplayFor(modelItem => item.Images) 时遇到的错误
EntityFramework.SqlServer.dll 中出现“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常,但未在用户代码中处理
附加信息:执行命令定义时出错。有关详细信息,请参阅内部异常。
型号
public partial class PostModel
{
public PostModel()
{
Images = new List<ImageModel>();
}
[Key]
[HiddenInput(DisplayValue = false)]
public int ID { get; set; }
[Required(ErrorMessage = "Heading is Required")]
[Display(Name = "Heading")]
public string Heading { get; set; }
[Required(ErrorMessage = "Body is Required")]
[DataType(DataType.MultilineText)]
[Display(Name = "Body")]
public string Body { get; set; }
public virtual ICollection<ImageModel> Images { get; set; }
public IEnumerable<HttpPostedFileBase> File { get; set; }
}
public class ImageModel
{
[Key]
public int ID { get; set; }
public string Path { get; set; }
public virtual PostModel Post { get; set; }
public string DisplayName { get; set; }
}
public class ImageVM
{
public int? ID { get; set; }
public string Path { get; set; }
public string DisplayName { get; set; }
public bool IsDeleted { get; set; }
}
public partial class PostVM
{
public PostVM()
{
Images = new List<ImageVM>();
}
public int? ID { get; set; }
public string Heading { get; set; }
public string Body { get; set; }
public IEnumerable<HttpPostedFileBase> Files { get; set; }
public List<ImageVM> Images { get; set; }
}
数据库上下文
public class EFDbContext : DbContext
{
public DbSet<PostModel> Posts { get; set; }
public DbSet<PostVM> PostVMs { get; set; }
public DbSet<ImageModel> Images { get; set; }
public DbSet<ImageVM> ImageVMs { get; set; }
}
控制器
public ViewResult Display()
{
return View(repository.Posts)
}
查看
@model IEnumerable<Crud.Models.PostModel>
@{
ViewBag.Title = "Index";
}
@foreach (var item in Model)
{
<div>
@Html.DisplayFor(modelItem => item.Heading)
</div>
<div>
@Html.DisplayFor(modelItem => item.Body)
</div>
<div>
@Html.DisplayFor(modelItem => item.Images)
@*<img class="img-thumbnail" width="150" height="150" src="/Img/@item.Images" />*@
</div>
}
这是我尝试过但没有使用的替代控制器,因为当我尝试 let Images = i.Path 时出现此错误并且不确定这是否意味着它是如何完成的
无法将 typeCrud 'string' 隐式转换为 'System.Collections.Generic.List Crud.Models.ImageVm'
public ViewResult Display()
{
IEnumerable<PostVM> model = null;
model = (from p in db.Posts
join i in db.Images on p.ID equals i.Post
select new PostVM
{
ID = p.ID,
Heading = p.Heading,
Body = p.Body,
Images = i.Path
});
return View(model);
}
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4