【问题标题】:Kendo grid column with image from a server带有来自服务器的图像的剑道网格列
【发布时间】:2014-10-03 09:32:15
【问题描述】:

如果图像存储在我的机器中,我有一个剑道网格,可以在列上正确显示图像。

@(Html.Kendo().Grid<ProjectName.Models.SomeModel>()
.Name("grid")
.Columns(columns =>
{
    ...
    columns.Bound(c => c.Image).ClientTemplate("<img src='c:/pics/" + "#=Image#' alt='image' Title='image' height='24'/>").Title("Image");
})

因此,这会正确显示存储在我的本地硬盘驱动器上的图像,路径为 c:/pics。但现在我需要显示存储在特定服务器中的图像,而不是我机器中的 c:/pics 文件夹。

我已尝试在此处替换此位:

src='c:/pics/"

使用这些选项:

src='\\999.99.99.999\ProjectName\Images\'
src='\\\\999.99.99.999\\ProjectName\\Images\\'
src='http://999.99.99.999/ProjectName/Images/'
src='999.99.99.999/ProjectName/Images/'

但它们都不起作用。

*注意 999.99.99.999 是假的,我在里面插入真实 IP。

如何将图像的来源设置为另一台机器的 IP 地址?

编辑:

如果我在视图的任何其他部分有图像标签,它可以正常工作,如下所示:

<img src="\\999.99.99.999\ProjectName\Images\somepic.jpg" alt="whatever" />

但是在网格中的列的ClientTemplate 中,反斜杠出现错误,这也是我尝试使用双反斜杠的原因。

【问题讨论】:

    标签: razor kendo-grid kendo-asp.net-mvc


    【解决方案1】:

    您是否尝试过将 javascript 提取出来,这样可能对您有用:

    从这里:

    columns.Bound(c => c.Image).ClientTemplate("<img src='c:/pics/" + "#=Image#' alt='image' Title='image' height='24'/>").Title("Image");
    

    到这里:

    columns.Bound(c => c.Image).ClientTemplate("#=GetMyImage(data.Image)#").Title("Image");
    

    然后让一个 javascript 函数为您构建图像。

    <script>
    
    function GetMyImage(image)
    {
     var returnString = 'No Image Found'; 
    
    //just checking to see if we have a name for the image 
    if(image !== null && image.length > 0)
    {
      returnString = '<img src="{Your server details here}\" + image + '" title="image" height="24" alt="image"/>;
    
    return returnString;  
    }
    }
    
    
    </script>
    

    如果我想为剑道网格的客户端模板做一些更有创意的事情,我通常会这样做。

    【讨论】:

    • 好的,我写了这个:returnString = '&lt;img src=\"\\\\999.99.99.999\\ProjName\\Images\\' + image + '" title=\"image\" height=\"24\" alt=\"image\"/&gt;';,它在 IE 上运行良好。但是,图像不会在 Firefox 或 Chrome 上显示。你能帮我吗?顺便说一句:+1 马上标记为正确答案!
    • 这可能与那些浏览器的内部安全性有关,如果您尝试使用相对 url,例如只是执行 ..\Images\{image name here},会发生什么情况同一个网站
    • 这很奇怪,因为它只适用于 IE:不适用于 Chrome、Firefox 或 Opera
    • 就像您尝试禁用/清除浏览器的缓存一样,以防它尝试缓存图像。同样在 chrome 的时间线中,它是否会尝试获取图像?
    • 是的,我试过了。我认为这可能与您提到的相对网址(我没有使用!)有关,因为当我在浏览器地址框中键入图像地址时,它会在任何浏览器中显示图像。正如我所说,我的img元素是:&lt;img src="\\999.99.99.999\ProjName\Images\img1.png"&gt;,如果使用相对路径应该是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2023-03-16
    • 2013-04-17
    相关资源
    最近更新 更多