动态图像显示 - javascript错误的网址阅读

时间:2017-01-15 14:52:00

标签: javascript html asp.net

我正在编写ASP.Net核心视图,我需要动态显示img。 我将在Controller中生成的@Model.AvatarUrl,传递给View,并将其显示为

defaultPreviewContent: '<img src="\\@Model.AvatarUrl" alt="Your Avatar" style="width:160px">',

问题是,我的网址是随机生成的,我将@ Model.AvatarURL链接为:

   "\\Uploads\\n2wrcbyx.buf.jpg"

现在,浏览器不想显示它,因为它显示为"\Uploads2wrcbyx.buf.jpg",因此我猜测\ n特殊字符被读取且我的网址不好。 如何解决? @Model.AvatarUrl中的更改实际上不是一种选择,因为它会导致很多问题。

1 个答案:

答案 0 :(得分:1)

问题是您的字符串未转义两次,一个在服务器端,一个在客户端。浏览器获取的内容&#34; \\上传\\ n2wrcbyx.buf.jpg&#34;它&#34; \上传\ n2wrcbyx.buf.jpg&#34;然后\ n被解释为新行。

对我有用的是取代&#34; \\&#34; by&#34; \\\\&#34;在视图中。

在我的模特中

public string AvatarUrl { get { return "\\Uploads\\n2wrcbyx.buf.jpg"; } }

在我看来

<script type="text/javascript">
    var model = {
      defaultPreviewContent: '<a href="\\@Model.AvatarUrl.Replace("\\", "\\\\")">hover</a>'
    };
    document.getElementById('target').innerHTML = model.defaultPreviewContent;
</script>

最后,链接的网址看起来像

http://uploads/n2wrcbyx.buf.jpg

如果您想使用Razor从服务器根生成网址:

defaultPreviewContent: '<a href="@Url.Content(@Model.AvatarUrl.Replace("\\", "\\\\"))"

你得到:

http://localhost:7669/Uploads/n2wrcbyx.buf.jpg