欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

使用.net资源文件时候发生的问题

发布时间:2024/8/5 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用.net资源文件时候发生的问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
最近在做一个自定义控件,发生了一个问题,就是在OnPreRender()的时候,需要注册客户端脚本,往往会在控件里加一个属性,设置javascript文件*.js的路径,在使用控件时,页面有可能放到n层的目录底下,有的页面在最上层的目录底下,而每个页面都要修改一下路径,会很麻烦,所以我打算把js封装到dll中。
在custom control的class中,写一个BuildScriptCode()的方法,以下是代码

private string BuildScriptCode()
        
{
            
string result = string.Empty;
            Stream stream 
= this.GetType().Assembly.GetManifestResourceStream("SMQControl.SMQControl.date.js");
            
//这里要说明一下,在"SMQControl.SMQControl.date.js"中,SMQControl.SMQControl.是改资源文件"date.js"的命名空间,这个一定要设置正确。
            StreamReader sr = new StreamReader(stream);
            
try
            
{
                result 
= sr.ReadToEnd();
            }

            
catch
            
{
            }

            
finally
            
{
                sr.Close();
            }

            
return result;
        }

于是,在OnPreRender方法中,注册客户端js。

        protected override void OnPreRender(EventArgs e)
        
{
            
if (!Page.IsClientScriptBlockRegistered("ShowDateWindow"))
            
{
                Page.RegisterClientScriptBlock(
"ShowDateWindow","<SCRIPT language='javascript'>" + BuildScriptCode() +"</SCRIPT>");//调用BuildScriptCode()方法取得js代码。
            }

            
this.Attributes.Add("onchange"string.Format("SetDateValues(document.getElementById('{0}'))"this.ClientID));
            
this.Attributes.Add("onclick"string.Format("LaunchCalendar(document.getElementById('{0}'), document.getElementById('{0}').value)"this.ClientID));
            
base.OnPreRender (e);
        }


还有一点值得注意的地方,就是项目里的date.js的资源文件,一定要在属性里设置Build Action为Embedded Resource,这样在编译的时候才能封装在dll中。

就是这样。

转载于:https://www.cnblogs.com/kchen/archive/2006/11/21/567505.html

总结

以上是生活随笔为你收集整理的使用.net资源文件时候发生的问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。