You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core上传图片后设置Image元素src属性不生效的路径问题

问题根因

  • 波浪号(~)无法在客户端JS中识别
    ~是ASP.NET Core Razor的服务端路径占位符,仅在服务端渲染.cshtml时会被解析为网站根目录路径,运行在浏览器端的JavaScript不会处理该符号,会直接将其作为路径的一部分发起请求,导致路径匹配错误。
  • 元素ID拼写不匹配
    你的img元素ID声明为imgPerons,但JS代码中获取元素时用的是imgPerson,拼写不一致会导致JS无法找到目标DOM元素,赋值操作自然无法生效。

修复方案

  1. 修正图片路径:直接使用根相对路径即可,ASP.NET Core的静态文件根目录默认是wwwroot,/开头的路径会直接映射到wwwroot目录下:
function onSuccess(e) {
    var files = e.files[0];
    if (e.operation == "upload") {
        // 去掉~,直接用/开头的根相对路径
        document.getElementById("imgPerson").src = "/images/person_photos/image.jpeg";
    }
}
  1. 统一ID拼写:要么将img元素的ID修改为imgPerson,要么将JS中getElementById的参数改为imgPerons,保证两端拼写完全一致。

补充说明

如果你的项目部署在二级虚拟目录下,需要动态获取根路径的话,可以在.cshtml中提前声明服务端解析的根路径变量供JS调用:

<!-- 写在.cshtml文件中,会在服务端渲染为实际的根路径 -->
<script>
const siteRoot = '@Url.Content("~/")';
</script>

后续JS中拼接路径即可:

document.getElementById("imgPerson").src = siteRoot + "images/person_photos/image.jpeg";

内容的提问来源于stack exchange,提问作者Abdulsalam Elsharif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:15:03