台灣最大程式設計社群網站
線上人數
984
 
會員總數:230802
接案會員:6775
文章總數:2320
討論主題:176284
歡迎您免費加入會員
討論區列表 >> ASP.NET >> MasterPage裡的控制項都會產生ctl00

[變換順序]
[我要回覆]
1


回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
MasterPage裡的控制項都會產生ctl00
價值 : 10 QP  點閱數:2456 回應數:6

樓主

chunhsien
初學者
345 266
1852 578
發送站內信

try過把ASP控制項寫在一般頁面能正確抓到設定的ID,如id=test
但是在MasterPage裡的控制項所產生的原始碼都變成ID=ctl00_test
有辦法不要ctl00嗎∼這樣js抓ID處理感覺好麻煩∼都要加ctl00
也不知道ctl00是不是永遠都不會變
本篇文章發表於2006-11-29 22:01
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

達可達
檢舉此回應
應該是不會變,MasterPage裡的控制項會多ctl00


本篇文章回覆於2006-11-29 23:36
--未登入的會員無法查看對方簽名檔--
2樓
回應

Likol
捐贈 VP 給 Likol Lee 檢舉此回應
這是一個好問題

根據我個人的測試結果
之所以會產生出ctl00這個多餘的名稱
原因是因為MasterPage其實也是一個控制項
所以它所內含的控制項自然就會依據階層的層次
加上上一層控制項的名稱

你如果非常介意名稱的話,可以用下面的方式直接指定
MasterPage的名稱

protected void Page_Load(object sender, EventArgs e)
{
this.ID = "masterPage";
}

你必須在每一次Page_Load都指定他的名稱,否則在PostBack後
它又會變回ctl00


本篇文章回覆於2006-11-30 05:59
--未登入的會員無法查看對方簽名檔--
3樓
我之前在寫UserControl(ASP.NET 1.1)時, 也有這類的情形,
雖然他有固定的規則在, 但要是遇上其他程式設計者在呼叫的時候改了某些東西,
造成ID跑掉的話, 也很麻煩,
所以我都是直接把 ClientID 輸出到網頁上
(也可以說是把Script寫在UserControl裡面, 藉此解決)


本篇文章回覆於2006-11-30 09:02
--未登入的會員無法查看對方簽名檔--
4樓
回應

達可達
檢舉此回應
對呀,如果用以前getElementId('') 都會用ID
結果幾次經驗後
現在都改用document.getElememtId('<%=xxx.ClientID%>');
:)


本篇文章回覆於2006-11-30 09:23
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

chunhsien
檢舉此回應
因為我的script都統一放在xx.js
不能呼叫<%%>來用才麻煩


本篇文章回覆於2006-11-30 10:13
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

窒息的小羊
捐贈 VP 給 小羊窒息 檢舉此回應
統一放在 xx.js 也沒差
(因為我也是...)


我在xx.js內都是寫
function ddt (objID)
{
...getElementById(objID)
...
}


然後在UserControl內, 把要呼叫ddt的Script, 都加上xxx.ClientID
(跟<%%>差不多, 但我是直接在後台輸出Script...)


本篇文章回覆於2006-11-30 10:26
--未登入的會員無法查看對方簽名檔--
[變換順序]
1
 

回覆
如要回應,請先登入.