asp.net - 如何在 Web 服务器控件中嵌入静态图像资源?

标签 asp.net vb.net image embedded-resource servercontrols

我将创建一个表示 TreeView 的 Web 服务器控件。所以我想为 + 和 - 用于展开/折叠使用 2 个图像。我如何才能以一种在页面上呈现时可用作图像源的方式将其构建到控件中?

因为这将在编译的网络控件库中,我不想依赖网络应用程序中的外部图像。

编辑:
基于this answer作者:Andre Kraemer 我做了以下事情:

在 AssemblyInfo.vb 中:

<Assembly: System.Web.UI.WebResource("MyCompany.MyWebControls.Resources.plus.gif", "image/gif")> 
<Assembly: System.Web.UI.WebResource("MyCompany.MyWebControls.Resources.minus.gif", "image/gif")> 

在我的 RenderContents 覆盖中:

Dim lPlusImage As New WebControls.Image()
Dim lMinusImage As New WebControls.Image()
lPlusImage.ImageUrl = Page.ClientScript.GetWebResourceUrl(Me.GetType(), "MyCompany.MyWebControls.Resources.plus.gif")
lMinusImage.ImageUrl = Page.ClientScript.GetWebResourceUrl(Me.GetType(), "MyCompany.MyWebControls.Resources.minus.gif")
lPlusImage.RenderControl(output)
lMinusImage.RenderControl(output)

我的程序集名称是 MyWebControls

我的根命名空间是 MyCompany.MyWebControls

图像 plus.gifminus.gif 位于名为 Resources 的文件夹中,图像具有 Build Action 设置为嵌入式资源

还是不行。我没有错误。我直接在浏览器中尝试了生成的图片 url,但没有任何反应,只是一个空白页面。

注意:
我尝试在资源名称中使用无效路径,结果完全一样,这让我想知道是否需要做一些特殊的事情来将实际资源映射到资源名称。仅当我在代码中使用的名称与 AssemblyInfo 中指定的名称不同时,我才会收到 404 Not Found 错误,这与指向实际资源的路径无关!

编辑:

我找到了 solution !

我发现这是C#和VB的区别。看我自己answer对于这个问题。

最佳答案

将这两个图像添加到一个名为 images of your treeview control project 的子文件夹中。然后将属性网格中的构建操作从内容更改为嵌入资源。

除此之外,您还必须像这样在 assemblyinfo.cs 文件中将这两个图像注册为程序集的嵌入式资源:

[assembly: System.Web.UI.WebResource("YourProjectsNameSpace.Images.plus.gif", "img/gif")]
[assembly: System.Web.UI.WebResource("YourProjectsNameSpace.Images.minus.gif", "img/gif")]

由于这些图像现在将嵌入到您的控件程序集中,您可以像这样使用 ClientScriptManager 访问它们:

string plusImageUrl  = Page.ClientScript.GetWebResourceUrl(this.GetType(), "YourProjectsNameSpace.Images.plus.gif");
string minusImageUrl  = Page.ClientScript.GetWebResourceUrl(this.GetType(), "YourProjectsNameSpace.Images.minus.gif");

关于asp.net - 如何在 Web 服务器控件中嵌入静态图像资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265004/

相关文章:

c# - 中等信任下的 ODP.net 访问违规

c# - 服务可以写入注册表 [HKLM]

.net - 删除单个消息 MSMQ

vb.net - VB6记录集代码到VB.Net

python - 在 python 中使用图像处理计算粒子

javascript - 完成页面加载后执行功能

c# - Asp.net Paypal 集成测试支付

c# - 修改选中状态后,不会触发Checkedchanged事件的复选框事件处理程序

c# - jquery模态对话框打开带有多个图像的图像onclick

html - 将图像放在我的 HTML 页面上 SVG 图像的右侧而不是底部