0

我正在尝试从数据库中获取图像文件并将其绑定到 KendoUI ListView。问题是它根本不显示图像。

这就是我所做的:

看法

 <script type="text/x-kendo-tmpl" id="template">
                <div class="product">
                    <img src="@Url.Content("#:PhotoID# + #:MIMEType#")" />
                </div>
            </script>
            <div id="imageListView2" class="demo-section">
                @(Html.Kendo().ListView<WorcesterMarble.ViewModels.PhotosViewModel>()
                                    .Name("listView")
                                    .TagName("div")
                                    .ClientTemplateId("template")
                                    .DataSource(dataSource =>
                                    {
                                        dataSource.Read(read => read.Action("GetImages", "StockReceiptsGrid").Data("passStockIDToListView"));
                                        dataSource.PageSize(1);
                                    })
                                    .Pageable()
                                    .Selectable(selectable => selectable.Mode(ListViewSelectionMode.Multiple))
                        //.Events(events => events.Change("onChange").DataBound("onDataBound"))
                )
            </div>

控制器

public JsonResult GetImages([DataSourceRequest] DataSourceRequest request, int stockReceiptID)
{
    var photos = _stockPhotosRepository.GetStocReceiptkPhotos(stockReceiptID).ToList();

    var photosList = new List<PhotosViewModel>();
    //var photosList = new List<FileContentResult>();

    if (photos.Count != 0)
    {
        foreach (var stockPhoto in photos)
        {
            var photoVm = new PhotosViewModel();

            photoVm.PhotoID = stockPhoto.PhotoID;
            photoVm.Image = stockPhoto.ImageData;
            photoVm.MIMEType = stockPhoto.MIMEType;

            // FileContentResult file = File(stockPhoto.ImageData, stockPhoto.MIMEType);

            photosList.Add(photoVm);
        }
        return Json(photosList.ToList(), JsonRequestBehavior.AllowGet);
    }
    else
    {
        return null;
        //FilePathResult file = this.File("/Content/Images/80.jpeg", "image/jpeg");
        //return file;
    }
    return null;
}

照片查看型号:

public class PhotosViewModel
{
    public int PhotoID { get; set; }    
    public byte[] Image { get; set; }
    public string MIMEType { get; set; }
    public int StockReceiptID { get; set; }
}

我不确定问题是否是由模板中的图像 url 设置引起的。如您所见,它实际上不是一个 url,因为除了数据库之外,图像不会保存在任何地方。这是列表视图的截图;即使必须显示 15 张图像,也只是空白!

在此处输入图像描述

请让我知道这个问题的任何线索或解决方案。

4

3 回答 3

1

我知道这有点老了,但你需要做的是换行return Json(photosList.ToList(), JsonRequestBehavior.AllowGet);为以下内容:

return Json(photosList.ToDataSourceResult(request),
    JsonRequestBehavior.AllowGet);

如果方法ToDataSourceResult无法识别该方法,则必须添加

using Kendo.Mvc.Extensions;

在您的文档顶部。

于 2014-07-09T10:38:29.073 回答
0

看起来您的控制器中缺少返回(就在您的结束之前if

return Json(photosList.ToList(), JsonRequestBehavior.AllowGet);

编辑

另外,我注意到了这一点:

<img src="@Url.Content("#:PhotoID# + #:MIMEType#")" />

那不应该是:

<img src="@Url.Content("#:ImageData#")" />

或类似的东西?

于 2014-01-31T16:46:02.577 回答
0

回答可能为时已晚,但您的问题是发送回视图的 json 数据太大,因此您的图像不会显示,而是将图像保存到文件中,然后通过 URL 呈现图像。

于 2014-05-29T15:19:07.897 回答