如何在MVC 4中显示路径中的图像?

时间:2014-07-23 16:51:47

标签: c# asp.net-mvc asp.net-mvc-4 razor

在开始之前,我之前已经在这里看过这个问题,并且我已经按照这里给出的答案和示例进行了说明:

how to display image from path in asp.net mvc 4 and razor view

但是当我做的时候

<img src="@Url.Content(Model.ImagePath)" class="dker" alt="..." />

我收到错误

  

来源错误

   [No relevant source lines]
   [NullReferenceException: Object reference not set to an instance of an object.]

在我的模特中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace NSProfileImages
{
    public class ProfileImages
    {
        public string ImagePath
        {
            get
            {
                return "~/Assets/Images/user_images/avatars/123@123.com.jpg";
            }
        }
    }
}

查看:

@model NSProfileImages.ProfileImages

<img src="@Url.Content(Model.ImagePath)" class="dker" alt="..." />

如果我这样做

<img src="~/Assets/Images/user_images/avatars/123@123.com.jpg" class="dker" alt="..." />

它会正常显示图像而没有错误。

3 个答案:

答案 0 :(得分:3)

怀疑您忘记向视图提供模型实例。

public ActionResult Index()
{
    // here we instantiate the type and supply it to the view. 
    ViewData.Model = new ProfileImages();
    return View();
}

或者,您可以通过View方法提供模型实例,如下所示:

 return View(new ProfileImages());

请注意,在这种情况下,您可以很好地创建模型属性static,这将无需完全提供视图模型:

public class ProfileImages {
    public static string ImagePath {
        get {
            return "~/Assets/Images/user_images/avatars/123@123.com.jpg";
        }
    }
}
...
<img src="@Url.Content(NsProfileImages.ProfileImages.ImagePath)" 
     class="dker" alt="..." />

答案 1 :(得分:0)

在你的控制器中你应该有这样的东西:

 ActionResult Index(){
 return View(new ProfileImages());
 }

答案 2 :(得分:0)

也许你没有传递模型来查看:

var model = new ProfileImages();
return View(model);