我正在使用c#在MVC4中进行一个项目。 在我的项目中,我将一组人员详细信息存储在具有唯一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给出了链接。但它可以接受。请帮帮我。
答案 0 :(得分:1)
在您的视图中,您将imgname
作为参数传递,并在控制器中获得image
。
<强>控制器强>
public string ImageRetrive(int imgname){ }
更改退货路径
return File(fullpath, "text/plain");
答案 1 :(得分: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
}