使用.net资源文件时候发生的问题
生活随笔
收集整理的這篇文章主要介紹了
使用.net资源文件时候发生的问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在做一個自定義控件,發(fā)生了一個問題,就是在OnPreRender()的時候,需要注冊客戶端腳本,往往會在控件里加一個屬性,設(shè)置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"的命名空間,這個一定要設(shè)置正確。
????????????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>");//調(diào)用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);
????????}
在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"的命名空間,這個一定要設(shè)置正確。
????????????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>");//調(diào)用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);
????????}
還有一點(diǎn)值得注意的地方,就是項目里的date.js的資源文件,一定要在屬性里設(shè)置Build Action為Embedded Resource,這樣在編譯的時候才能封裝在dll中。
就是這樣。
轉(zhuǎn)載于:https://www.cnblogs.com/kchen/archive/2006/11/21/567505.html
總結(jié)
以上是生活随笔為你收集整理的使用.net资源文件时候发生的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁是占据C盘的凶手
- 下一篇: ACE线程管理机制-并发控制