目标效果:
项目中显示视频列表时,如果缩略图不存在,则加载一个默认图片。而不是一个很丑的小红叉。其中缩略图图片是存在另外一个独立的视频服务器上的,所以我们不能用File.Exist()方法直接判断,需要另辟蹊径。
实现步骤:
前台采用 asp:Repeater 控件,添加事件onitemdatabound="rptTraining_ItemDataBound"。
protected
void
rptTraining_ItemDataBound(
object
sender, RepeaterItemEventArgs e)
{
Image img = (Image)e.Item.FindControl( " img " );
if ( ! RemoteFileExists (img.ImageUrl ))
{
img.ImageUrl = " images/memo.jpg " ;//如果图片不存在,则加载默认图片
}
}
{
Image img = (Image)e.Item.FindControl( " img " );
if ( ! RemoteFileExists (img.ImageUrl ))
{
img.ImageUrl = " images/memo.jpg " ;//如果图片不存在,则加载默认图片
}
}
加载每一条记录的时候都检测一下远程服务器上是否存在图片,RemoteFileExists方法如下。
///
<summary>
/// 判断远程文件是否存在
/// </summary>
/// <param name="fileUrl"> 文件URL </param>
/// <returns> 存在-true,不存在-false </returns>
private bool RemoteFileExists( string fileUrl)
{
bool result = false ; // 下载结果
WebResponse response = null ;
try
{
WebRequest req = WebRequest.Create(fileUrl);
response = req.GetResponse();
result = response == null ? false : true ;
}
catch (Exception ex)
{
result = false ;
}
finally
{
if (response != null )
{
response.Close();
}
}
return result;
}
/// 判断远程文件是否存在
/// </summary>
/// <param name="fileUrl"> 文件URL </param>
/// <returns> 存在-true,不存在-false </returns>
private bool RemoteFileExists( string fileUrl)
{
bool result = false ; // 下载结果
WebResponse response = null ;
try
{
WebRequest req = WebRequest.Create(fileUrl);
response = req.GetResponse();
result = response == null ? false : true ;
}
catch (Exception ex)
{
result = false ;
}
finally
{
if (response != null )
{
response.Close();
}
}
return result;
}
至此,实现了想要的效果。
知识虽小,重在点滴。积跬步方以至千里。
本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/archive/2010/12/14/1905625.html,如需转载请自行联系原作者