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 に答える