Asp.net mvc 4 在ASP.NET MVC中提供从网络到视图的图像

Asp.net mvc 4 在ASP.NET MVC中提供从网络到视图的图像,asp.net-mvc-4,Asp.net Mvc 4,我正在尝试从服务器加载图像,然后将其加载到视图: var files = _directoryInfo.GetFiles() .Where(x => x.Name.Contains(request.WarrantyReference)) .ToList(); model.Photos = files; return View(model); 然后在视图中,我正在做: @if (Model.Photos.Count > 0) {

我正在尝试从服务器加载图像,然后将其加载到视图:

var files = _directoryInfo.GetFiles()
            .Where(x => x.Name.Contains(request.WarrantyReference))
            .ToList();

model.Photos = files;

return View(model);
然后在视图中,我正在做:

@if (Model.Photos.Count > 0)
{
    @Html.Partial("_Photos", Model.Photos)
}
_照片:

@model List<FileInfo>
<div class="ui items">
    @foreach (var photo in Model)
    {
        <div class="item">
            <div class="image">
                <img src="@photo.FullName">
            </div>
        </div>
    }
</div>

因此,我想知道是否有可能将照片临时存储在我的服务器上,以供查看,或者是否有其他方法解决此问题?

您需要将文件复制到ASP.NET用户用于服务/托管网站的应用程序池的某个位置。或者,授予共享应用程序池帐户读取权限。另一种方法是读取文件并将其存储在字节[]中,最后在屏幕/视图上呈现,而不实际将文件写入磁盘。

将文件名(或某些标识符)存储在模型中

型号

class Model
{
    IList<string> Photos { get; set; }
类模型
{
IList照片{get;set;}
创建HtmlHelper以显示您的照片图像

在您的示例中,您可以将“WX0001 1.jpg”存储为照片标识符,然后当您从网络服务器读取文件时,您可以在特定目录中查找

查看

@model List<FileInfo>
<div class="ui items">
    @foreach (var photo in Model)
    {
        <div class="item">
            <div class="image">
                @Html.PhotoImage(photo)
            </div>
        </div>
    }
</div>

public static MvcHtmlString PhotoImage(this HtmlHelper html, string id)
{
    var img = new TagBuilder("img");

    var your_image_byte_array = read_image_from_server_using_id;
    var base64 = Convert.ToBase64String(your_image_byte_array);

    img.Attributes.Add("src", String.Format("data:image/gif;base64,{0}", base64));

    return MvcHtmlString.Create(img.ToString());
}
@型号列表
@foreach(模型中的var照片)
{
@Html.PhotoImage(照片)
}
公共静态MvcHtmlString照片图像(此HtmlHelper html,字符串id)
{
var img=新标记生成器(“img”);
var your\u image\u byte\u array=使用\u id从\u服务器\u读取\u image\u;
var base64=Convert.ToBase64String(您的\u图像\u字节\u数组);
Add(“src”,String.Format(“数据:image/gif;base64,{0}”,base64));
返回MvcHtmlString.Create(img.ToString());
}
或者,看看如何使用动作方法来显示图像

@model List<FileInfo>
<div class="ui items">
    @foreach (var photo in Model)
    {
        <div class="item">
            <div class="image">
                @Html.PhotoImage(photo)
            </div>
        </div>
    }
</div>

public static MvcHtmlString PhotoImage(this HtmlHelper html, string id)
{
    var img = new TagBuilder("img");

    var your_image_byte_array = read_image_from_server_using_id;
    var base64 = Convert.ToBase64String(your_image_byte_array);

    img.Attributes.Add("src", String.Format("data:image/gif;base64,{0}", base64));

    return MvcHtmlString.Create(img.ToString());
}