【发布时间】:2015-10-07 18:23:16
【问题描述】:
我正在使用带有 Razor 视图引擎的 MVC 5。我想显示名称保存在数据库中的图像。这是我的视图代码:
<img class="article-image" src="@Url.Content(string.Format("~/Images/Upload/{0}/{1}", Model.FolderName, Model.ImageName))" width="100%" />
这可以正常工作,直到我在 Model.ImageName 中有特殊字符,例如“Untitled#@.png”。我在渲染的 html 中有这个:
<img class="article-image" width="100%" src="/Images/Upload/de7b1f47-c9ec-4521-ae8d-faae518e1144/Untitled#@.png">
如果我对文件名使用 URL 编码,图像会正确显示。这是编码版本:
<img class="article-image" width="100%" src="/Images/Upload/de7b1f47-c9ec-4521-ae8d-faae518e1144/Untitled%23%40.png">
我也试过了
<img class="article-image" src="@string.Format("~/Images/Upload/{0}/{1}", Model.FolderName, Model.ImageName)" width="100%" />
没有运气。
我在 MSDN 中发现了有关 UrlHelper.Content 的内容:
如果指定的内容路径不以波浪号 (~) 字符开头,则此方法返回 contentPath 不变。
我只是想知道为什么 UrlHelper.Content 不能解决我的问题?我不想手动编码我的文件名。
对不起我的英语不好。
【问题讨论】:
标签: html asp.net-mvc razor asp.net-mvc-5