如何使用ASP.NET MVC从文件夹显示图像

时间:2017-03-25 15:35:27

标签: sql-server asp.net-mvc image entity-framework

我在项目之外创建实体 this is solution Explorer

我的实体发布

[Table("Post")]
public partial class Post
{
    public int PostID { get; set; }

    [Required]
    [StringLength(256)]
    public string Title { get; set; }

    [StringLength(256)]
    public string Description { get; set; }

    [StringLength(256)]
    public string Picture { get; set; }

    public int CategoryID { get; set; }

    [StringLength(10)]
    public string ViewNumber { get; set; }

    public int UserID { get; set; }

    public DateTime CreateDate { get; set; }

    public int LikeNumber { get; set; }

    public int? CommentID { get; set; }
}

我的帖子控制器

[HttpPost]
    public ActionResult UpPost(Post model, HttpPostedFileBase txtImg)
    {
            var db = new ShareImageDbContext();

                if (ModelState.IsValid)
            {
            if (txtImg != null)
            {
                txtImg.SaveAs(HttpContext.Server.MapPath("~/Images/")
                                                      + txtImg.FileName);
                var post = new Post();
                post.PostID = model.PostID;
                post.Title = model.Title;
                post.Description = model.Description;
                post.CategoryID = model.CategoryID;     
                var userSession = new UserLogin();                    
                userSession = (UserLogin)Session[ShareImage.Common.CommonConstants.USER_SESSION];
                post.UserID = userSession.UserID;                     
                post.CreateDate = DateTime.Now;
                post.Picture = txtImg.FileName;
                db.Posts.Add(post);
                db.SaveChanges();

                    return RedirectToAction("Index", "Homeuser");
                }

                    else
            {
                ModelState.AddModelError("", "Đăng ảnh thất bại!");
            }
        }
        return View(txtImg);
        }

我的帖子数据库 I inserted some post

我想显示所有Post on View。我将模型称为如下。

@model IEnumerable<Model.EF.Post>

我打电话给foreach

@foreach (var item in Model)

但它有一个错误:

  

对象引用未设置为对象的实例。

我可以在Images文件夹中显示我的图像作为代码如下,但我想显示Post表的更多属性,如Title,Discription,CreateDate ......

@foreach(var imgPath in Directory.GetFiles(Server.MapPath("~/Images")))
{
   var img = new FileInfo(imgPath);
   <img src="@Url.Content(String.Format("~/Images/{0}", img.Name))" />
   <hr />
}

请指导我如何修复它,谢谢!

1 个答案:

答案 0 :(得分:0)

在您的视图中,使用String.IsNullOrWhiteSpace表示字符串和 图片<img src="<%= ResolveUrl(item.Picture) %>" alt="" />

由于您未设置或创建对象的某处而导致的问题。您的引用具有空值。它在视野或控制器中升起。如果您提供错误消息,那就太好了。