Kendo网格列与来自服务器的图像

时间:2014-10-03 09:32:16

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

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

@(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地址设置图像源?

修改

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

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

但是在网格列的ClientTemplate内,我得到了反斜杠的错误,这也是我尝试使用双反斜杠的原因。

1 个答案:

答案 0 :(得分:1)

你是否尝试过将这样的javascript拉出来对你有用:

由此:

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

To This:

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>

如果我想通过客户端模板化Kendo网格做一些更有创意的事情,这通常就是我的工作。