我正在开发一个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,任何想法,帮助将不胜感激,谢谢。
答案 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