xr2*_*0xr 7 c# asp.net asp.net-3.5 embedded-resource
我正在尝试将图像和样式表从用户控件移动到程序集中的嵌入资源.我使用Reflector看到图像和.css文件嵌入在程序集中,但是当我尝试使用ClientScript.GetWebResourceUrl()创建的URL访问它们时,找不到该资源.我很难过.
程序集默认命名空
TestWebApp
Run Code Online (Sandbox Code Playgroud)
文件的路径(标记为BuildAction:Embedded Resource)是
TestWebApp/Resources/CSS/PaymentHistory.css
TestWebApp/Resources/Images/loading.gif
Run Code Online (Sandbox Code Playgroud)
所以我的资源注册为:
[assembly: WebResource("TestWebApp.Resources.CSS.PaymentHistory.css", "text/css", PerformSubstitution = true)]
[assembly: WebResource("TestWebApp.Resources.Images.loading.gif", "image/gif")]
Run Code Online (Sandbox Code Playgroud)
访问资源的用户控件(在同一程序集中):
TestWebApp.UserControls.PaymentHistory
Run Code Online (Sandbox Code Playgroud)
为了简化,我目前只是尝试引用图像而不是样式表.在我的用户控件的Page_Load中,我将Image控件的ImageUrl设置为资源URL:
image1.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "TestWebApp.Resources.Images.loading.gif");
Run Code Online (Sandbox Code Playgroud)
在运行时,一切看起来都没有错误,但它会渲染出损坏的图像.这是渲染的图像源:
<img style="border-width:0px;" src="/WebResource.axd?d=8fC_1tLPjrUCxmFc_Q2MKY0-pHAak-sTWkpLLV3D56H_c08LujXC63ia2PNICE65_i-Q4JqprAigLpbrXG-rIAr6ePO4HHcdQKgdd3szlThv2gizxOJLJsPRNe-b_M6ApTwPsH_5oZAuONTN0cumOTRr1nA1&t=635133745137507721" id="ph1_image1">
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中导航到该URL,则会收到404,无法找到该资源.我究竟做错了什么?
编辑: 必须有一些基本的我不理解和/或我正在做一些非常愚蠢的事情.这是一个简单的VS 2010示例.我已经遵循了所有必要的步骤,我知道嵌入JScript1.js并通过WebResource.axd访问它,但它得到了错误.
Mic*_*Liu 12
在示例项目的Default.aspx.cs文件中,更改this.GetType()为typeof(_Default):
Page.ClientScript.RegisterClientScriptInclude("JScript1",
Page.ClientScript.GetWebResourceUrl(typeof(_Default), "EmbeddedResources.JScript1.js"));
Run Code Online (Sandbox Code Playgroud)
同样,在PaymentHistory.ascx.cs文件中,更改this.GetType()为typeof(PaymentHistory):
image1.ImageUrl = Page.ClientScript.GetWebResourceUrl(
typeof(PaymentHistory), "TestWebApp.Resources.Images.loading.gif");
Run Code Online (Sandbox Code Playgroud)
说明: GetWebResourceUrl查看type参数以确定哪个程序集包含嵌入的资源.指定this.GetType()为type不正确,因为,在.aspx或的.ascx代码隐藏类,this.GetType()是指不为该类,而是该被动态地从在.aspx或标记的.ascx生成的派生类.此派生类驻留在单独的程序集中,因此GetWebResourceUrl无法找到嵌入的资源.
| 归档时间: |
|
| 查看次数: |
5190 次 |
| 最近记录: |