用空格显示图像

时间:2013-11-16 11:49:27

标签: c# asp.net-mvc-4

我正在开发一个MVC网站,它从现有的桌面应用程序中提供了一个非常可怕的数据库,咆哮!我在本地文件系统中有为每个属性显示的图像文件,一些文件名有空格而且没有正确显示。

if (imageFound != null)
{
    string fileName = item.PropertyImages.Where(i => i.ImagePosition == 1).FirstOrDefault().FileName;
    fileName = System.Web.HttpUtility.UrlEncode(fileName);
    item.MainDisplayImage = @"images/" + item.PropertyID + "/" + fileName;            
 }
 else
 {
      item.MainDisplayImage = "images/properties/lx0001/thumb/01-image.jpg";
 }

视图看起来像

<a href="propertydetail.html">
    <img src=@item.MainDisplayImage.ToString() title="207 Joe Bloggs Avenue" alt="207 Joe Bloggs Avenue" width="210" height="150" border="0" />
</a>

它在浏览器中呈现如images / AMPM0263 / 2013-09-17 + 11.22.42.jpg,任何想法,帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

我刚刚在Linqpad中试过这个,这一行导致用+替换你的空格:

fileName = System.Web.HttpUtility.UrlEncode(fileName);

如果你注释掉这一行,那么文件名应该是正确的。如果您不想这样做,可以使用以下方法再次手动替换+:

fileName = System.Web.HttpUtility.UrlEncode(fileName).Replace("+", " ");

通常情况下,您会调用Uri.EscapeDataString(),用%20替换空格。

答案 1 :(得分:0)

避免使用HttpUtility.UrlEncode任何变体。它总是会导致ASP.NET文件路径出现问题而不是首选。或者,您可以使用 Uri.EscapeDataString

http://msdn.microsoft.com/en-us/library/system.uri.escapeuristring(v=vs.110).aspx