iT邦幫忙

0

關於Asp.Net 內容頁面控制主版頁面控制項的問題

您好 , 我把問題敘述如下 , 希望大家幫我看看:

主版頁面 AddData.master 包含一個 叫做 lbl_FunctionName 的 Label 控制項

<asp:Label ID="lbl_FunctionName" runat="server" Text="FunctionName" Width="150px"></asp:Label>

內容頁面 AddMyData.aspx.cs 檔 的 Page_Load 事件 程式碼如下:

/*
Label01 是 AddMyData 上已經放好的一個 Label 控制項
*/

Label myLabel = (Label)this.Master.FindControl("lbl_FunctionName");

if (myLabel != null)
{
Label01.Text = myLabel.Text;
}
else
{
Label01.Text = "No Value";
}

但是當 AddMyData 個頁面做 Page_Load 的時候, Label01 卻 出現 "No Value"
代表在 在主版頁面 AddData.master 裡找不到 lbl_FunctionName 這一個控制項
可是在 AddMyData.aspx 的畫面上卻可以看見 lbl_FunctionName 這個控制項

很多示範資料都是用 <script runat=server></script> 把 Page_Load 包起來放在 aspx 檔裡,部過這樣感覺起來程式碼都被看光光,很沒有安全性。
所以我是寫在 cs 檔裡,程式碼可以被編譯在 dll 裡,這樣的作法應當比較好是吧?

AddData.master 有套一個 Site.master 的主版頁面,也就是說 AddMyData 是套一個巢狀的主板頁面(Site.master->AddData.master)

AddMyData.aspx 的 MasterPageFile="~/GlobalUsing/TempletePage/AddData.master"

我想做的是 在 AddMyData.aspx 這個內容頁面去控制 主版頁面 AddData.master 的控制項
查了很多資料都試不成功,有人可以告訴我是哪邊出錯嗎?

謝謝!

1 個回答

2
fox18
iT邦研究生 5 級 ‧ 2012-04-10 11:16:41
最佳解答

寫法看起來沒啥問題
如果是在單層的主版頁面應該可以成功才對
你可以在AddMyData頁面用"檢視原始檔"看一下
lbl_FunctionName 這個控制項的ID還是叫lbl_FunctionName嗎
是不是因為巢狀主板頁面的關係被改了名稱之類的

我要發表回答

立即登入回答