旧版ASP.NET项目如何从本地资源文件设置图片src实现多语言本地化
可以通过LocalResource设置img的src属性,你之前的写法失效是因为runat="server"的服务器控件属性中不支持直接嵌套<%= %>内联代码块,下面是两种可直接落地的实现方案:
方案1:资源表达式绑定(无需写后台代码,推荐)
- 先调整资源文件配置:
- 三个资源文件(默认/德语/法语)中各新增一条资源条目,Name设为
StepImgSrc - 英文默认值填
~/images/e/step.jpg,德语填~/images/g1/step.jpg,法语填~/images/f1/step.jpg
- 三个资源文件(默认/德语/法语)中各新增一条资源条目,Name设为
- 修改img标签写法,直接用ASP.NET内置的资源表达式绑定src:
<img id="img78" src='<%$ Resources: StepImgSrc %>' runat="server" alt="image2" width="267" />
方案2:后台代码赋值(兼容性更高,不易出错)
- 资源文件可以选择和方案1一致配置全路径,也可以只存路径分段:
- 新增资源条目Name为
ImgFolderSegment,默认值e,德语g1,法语f1
- 新增资源条目Name为
- 打开对应UserControl的后台代码文件
Activate.ascx.cs,在Page_Load事件中添加赋值逻辑:
protected void Page_Load(object sender, EventArgs e) { // 读取本地资源的路径分段,兜底默认值为英文路径 string folder = GetLocalResourceObject("ImgFolderSegment")?.ToString() ?? "e"; // 拼接路径并赋值给img控件,ResolveUrl会自动解析~开头的虚拟路径 img78.Src = ResolveUrl($"~/images/{folder}/step.jpg"); }
注意事项
- 确保资源文件的访问修饰符设置为
public,否则会出现读取不到资源的问题 - 不需要给图片相关的资源键加
.Text后缀,此前缀是专门给Label、Literal这类文本控件做隐式资源绑定时用的
内容的提问来源于stack exchange,提问作者poocha
相关产品推荐
相关产品推荐

