动态图像显示-javascript错误的url读取
我正在编写ASP.NETCore视图,需要在其中动态显示img。 我正在传递控制器中生成的动态图像显示-javascript错误的url读取,javascript,html,asp.net,Javascript,Html,Asp.net,我正在编写ASP.NETCore视图,需要在其中动态显示img。 我正在传递控制器中生成的@Model.AvatarUrl,,以查看并显示为 defaultPreviewContent: '<img src="\\@Model.AvatarUrl" alt="Your Avatar" style="width:160px">', 现在,浏览器不想显示它,因为它的读取方式是“\Uploads2wrcbyx.buf.jpg”,所以我猜是读取了\n特殊字符,而我的url是错误的。 如何解
@Model.AvatarUrl,
,以查看并显示为
defaultPreviewContent: '<img src="\\@Model.AvatarUrl" alt="Your Avatar" style="width:160px">',
现在,浏览器不想显示它,因为它的读取方式是“\Uploads2wrcbyx.buf.jpg”
,所以我猜是读取了\n特殊字符,而我的url是错误的。
如何解决这个问题?更改
@Model.AvatarUrl
确实不是一个选项,因为它会导致很多问题。问题是您的字符串被取消了两次替换,一次在服务器端,一次在客户端。浏览器从“\\Uploads\\n2wrcbyx.buf.jpg”获得的内容是“\Uploads\n2wrcbyx.buf.jpg”,然后\n被解释为新行
对我有效的方法是在视图中将“\\”替换为“\\\”
在我的模型中
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>
如果您想使用Razor从服务器根目录生成url,它是:
defaultPreviewContent: '<a href="@Url.Content(@Model.AvatarUrl.Replace("\\", "\\\\"))"
你试过用斜杠“/”而不是反斜杠“\”?是的,正斜杠有效,但我想要的是反斜杠。谢谢。这似乎是一个很好的答案,但是,我将我的实现更改为使用finally/,所以我没有问题。
http://uploads/n2wrcbyx.buf.jpg
defaultPreviewContent: '<a href="@Url.Content(@Model.AvatarUrl.Replace("\\", "\\\\"))"
http://localhost:7669/Uploads/n2wrcbyx.buf.jpg