最近项目用日期控件,想把My97的资源文件跟TextBox封装成一个DatePicker控件,其实很简单的意见事情,但是还是用了一天多的时间,主要的问题就是解决资源文件加载的问题。通过一天多的努力,得出下面的结论:

1、自定义控件中,一般只要加载JS文件,但是所有的资源文件都需要在AssemblyInfo.cs中注册。具体方式如下:

  1.1、控件中注册JS文件代码:

/// <summary>
/// 注册JS
/// </summary>
/// <param name="e"></param>
protected override void OnPreRender(EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude("WdatePicker", GetResUrl("WdatePicker.js")); base.OnPreRender(e);
} /// <summary>
/// 获取JS文件路径
/// </summary>
/// <param name="strName"></param>
/// <returns></returns>
private string GetResUrl(string strName)
{
return Page.ClientScript.GetWebResourceUrl(GetType(),
"Founder.Framework.Web.UI.WebControls.FIDatePicker.Resource." + strName);
}

  1.2、AssemblyInfo.cs中注册资源文件代码:

//My97资源文件
[assembly: WebResource("Founder.Framework.Web.UI.WebControls.FIDatePicker.Resource.WdatePicker.js", "text/javascript")]

2、如果JS中需要通过相对路径引用CSS文件,那么将资源文件嵌入到DLL的方法是不行的,不能通过相对路径找资源,需要把相对路径改成http://localhost/cmd2.0/WebResource.axd?d=WLbEEdvLp5nx1XFfQ8MUMXnmSqTu_IhZyNtDZskTQa4OjNpOfsH9sqWwz8LLXYpbWPqCID9cFVyVg4I0ha1vNBHPJSbo6jMHbBiUM63WFC2gr6hYonIxQ9r03VB6jhowyzDi23srRj9hfI4sfmUSV3CaI87aJd9Qg28Jy6CH1vC4tAlxqtIpyd7FDaix8-HNNXrnQXgGnjdLQxqPkemk2agkxbQQpwJVEEoCudFcYBM1&t=635400916300729758这种路径。

还有一种方式是,把资源文件放在Web站点目录中,通过相对路径去访问。

3、当遇到http://localhost/cmd2.0/WebResource.axd?d=WLbEEdvLp5nx1XFfQ8MUMXnmSqTu_IhZyNtDZskTQa4OjNpOfsH9sqWwz8LLXYpbWPqCID9cFVyVg4I0ha1vNBHPJSbo6jMHbBiUM63WFC2gr6hYonIxQ9r03VB6jhowyzDi23srRj9hfI4sfmUSV3CaI87aJd9Qg28Jy6CH1vC4tAlxqtIpyd7FDaix8-HNNXrnQXgGnjdLQxqPkemk2agkxbQQpwJVEEoCudFcYBM1&t=635400916300729758这种访问不到的资源时,需要仔细查看注册资源的地方,是不是文件名或者路径不对,如果真的看不出来,可以通过反射System.Web的方式解析这个字符处,看看到底是哪个文件出错了。具体代码如下:

 Type type = typeof(System.Web.UI.Page);//获取Page类型
MethodInfo methods = type.GetMethod("DecryptString", BindingFlags.NonPublic | BindingFlags.Static);//获取解密的方法 object obj = Activator.CreateInstance(type, null);
object[] args = { this.txtOldValue.Text };
this.txtNewValue.Text = methods.Invoke(obj, args).ToString();

4、解密是需要注意两个问题:

  4.1、解密的代码需要在同一个站点中,不能独立于出错的站点来解密。

  4.2、最新的4.0版本的System.Web.dll的DecryptString方法有两个参数,不晓得如何用,反正我测试N久无果。

ASP.NET自定义控件加载资源WebResource问题的更多相关文章

  1. Java加载资源文件几种方法

    from: http://andyzhu.blog.51cto.com/4386758/775836/ import java.net.URL; import org.springframework. ...

  2. Maven,预加载资源文件

    预加载资源文件需要先启用功能: <build> <resources> <resource> <directory>src/main/resources ...

  3. 【Unity3D】Unity3D之 Resources.Load 动态加载资源

    [Unity3D]Unity3D之 Resources.Load 动态加载资源 1.Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹 ...

  4. 教你50招提升ASP.NET性能(十四):使用startMode属性来减少ASP.NET站点加载时间

    (25)Use the startMode attribute to reduce the load time for your ASP.NET site 招数25: 使用startMode属性来减少 ...

  5. 从高德 SDK 学习 Android 动态加载资源

    前不久跑去折腾高德 SDK 中的 HUD 功能,相信用过该功能的用户都知道 HUD 界面上的导航转向图标是动态变化的.从高德官方导航 API 文档中 AMapNaviGuide 类的描述可知,导航转向 ...

  6. 动态加载资源文件(ResourceDictionary)

    原文:动态加载资源文件(ResourceDictionary) 在xaml中控件通过绑定静态资源StaticResource来获取样式Style有多种方式: 1.在项目的启动文件App中<App ...

  7. asp.net动态加载ascx用户控件

    原文:asp.net动态加载ascx用户控件 在主aspx/ascx文件中,将目标ascx1,ascx2控件拖拉到其页面中,然后删除,目的是要生成:Register 代码,然后在主文件中定义DIV或T ...

  8. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...

  9. 【new File(String Path)加载资源问题】

    2017-12-17   15:07:38  [原创-wx] 一.我们在用IO流加载资源的时候,创建文件资源 1 File file = New File("String Path" ...

随机推荐

  1. python运维开发(九)----socket

    内容目录: socket通信过程 单线程socket 多线程socket ThreadingTCPServer socket socket通常也称作"套接字",用于描述IP地址和端 ...

  2. 正式学习React(四) 前序篇

    预热 redux 函数内部包含了大量柯里化函数以及代码组合思想 柯里化函数(curry) 通俗的来讲,可以用一句话概括柯里化函数:返回函数的函数 // example const funcA = (a ...

  3. Vector, ArrayList, Array

    JAVA新手在使用JAVA的时候大概都会遇到这个问题: JAVA中的Array, ArrayList, Vector, List, LinkedList有什么样的区别?尤其是Vector, Array ...

  4. 仿制的ActivityIndicatorView

    仿制Github上CSS3效果制作的几个简单的ActivityIndicator,复习一下IOS动画操作. 原效果连接:https://github.com/tobiasahlin/SpinKit 代 ...

  5. js 获取浏览器内核

    <script language="JavaScript" type="text/javascript">    var browser = {   ...

  6. PM产品经理练级攻略(1-5等级)

    大家都叫“PM”,但做的事情却完全不同? “PM”这个词到底是什么意思? 这个话题恐怕也是各位同行都一直在想,也一直想不清楚的吧,我也是. 每次看到各种“产品经理的能力模型”,我都觉得有点扯淡,总觉得 ...

  7. UVA 12902 Reverse Polish Notation

    //跟wyr学的//其实是贪心//题解稍后补上 #include<cstdio> #include<iostream> #include<cmath> #inclu ...

  8. linux之SQL语句简明教程---ORDER BY

    到目前为止,我们已学到如何藉由 SELECT 及WHERE 这两个指令将资料由表格中抓出.不过我们尚未提到这些资料要如何排列.这其实是一个很重要的问题.事实上,我们经常需要能够将抓出的资料做一个有系统 ...

  9. SQLServer中临时表与表变量的区别分析【转】

    在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永 ...

  10. js获取网页高度和宽度(备份)

    网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...