0

嗨,我正在使用 C# 在 MVC4 中做一个项目。在我的项目中,我将一些具有唯一 ID 的人员详细信息存储在数据库中。并且还将特定人员的个人资料图片存储在我项目的文件夹中。(ID 编号和图片名称相同)。在视图中我想显示所有这些细节。问题在图像中。我使用以下代码

看法

   @foreach(var item in Model)
    {
       <td><img src="@Url.Action("ImageRetrive", "Member", new {imgname=(item.Id)})" /><br />Rtn. @item.Mem_NA<br />(@item.Mem_Occ)</td>
    }

控制器

    public string ImageRetrive(int imgname)
    {
        string keyword=image.ToString();
        string imagefolderpath = Server.MapPath("~/Content/Member/MemberPhotos");
        string currentimage  = new Member().GetImage(imagefolderpath,keyword);
        string fullpath = "~/Content/Member/MemberPhotos/" + currentimage;
        return fullpath;

    }

模型

   public string GetImage(string path,string keyword)
    {
       DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] images = di.GetFiles();
        foreach (FileInfo image in images)
        {
            var name = image.Name;
            if (name.Contains(keyword))
            {
                imgname = name;
            }
        }
        return imgname;
    }

但我没有得到任何输出。在控制器中,变量 fullpath 给出了链接。但它可以接受。请帮我。

4

2 回答 2

1

在您的视图中,您imgname作为参数传递,在您的控制器中,您得到image.

控制器

public string ImageRetrive(int imgname){ }

更改返回路径

return File(fullpath, "text/plain"); 
于 2013-08-23T07:17:30.113 回答
1

我认为您需要的是FilePathResult,将您的控制器代码更改为

public FilePathResult  ImageRetrive(int imgname)
{
    string keyword=image.ToString();
    string imagefolderpath = Server.MapPath("~/Content/Member/MemberPhotos");
    string currentimage  = new Member().GetImage(imagefolderpath,keyword);
    string fullpath = "~/Content/Member/MemberPhotos/" + currentimage;

    return File(fullpath, "image/png"); //Changed here
}

或者您可以使用FileContentResult

public FileContentResult Retrive(int imgname)
{
    return File(ConvertToByteArray(YourFile), "image/png"); //Changed here
}
于 2013-08-23T08:03:16.713 回答