我正在编写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
中的更改实际上不是一种选择,因为它会导致很多问题。
答案 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