我下面這個例子:http://msdn.microsoft.com/en-us/library/ms178210.aspx客戶端回調母版頁
而且我可以得到它只是一個單一的頁面和代碼後面的工作,但是當我添加一個母版,這些例子不工作正常。在我的母版頁中,我有一個頭部內容部分和一個內容部分。這不是什麼幻想。
我如何做主頁的客戶端回調?
我下面這個例子:http://msdn.microsoft.com/en-us/library/ms178210.aspx客戶端回調母版頁
而且我可以得到它只是一個單一的頁面和代碼後面的工作,但是當我添加一個母版,這些例子不工作正常。在我的母版頁中,我有一個頭部內容部分和一個內容部分。這不是什麼幻想。
我如何做主頁的客戶端回調?
我得到它的工作。
要確保你修改這個代碼,以佔母版內容識別前綴:
function LookUpStock()
{
var lb = document.getElementById("MASTERPAGEPREFIX_" + "ListBox1");
var product = lb.options[lb.selectedIndex].text;
CallServer(product, "");
}
function ReceiveServerData(rValue)
{
document.getElementById("MASTERPAGEPREFIX_" + "ResultsSpan").innerHTML = rValue;
}
更具擴展性的方法是使用下面的語法(一個aspx面板更換ResultsSpan太)...
function LookUpStock()
{
var lb = document.getElementById('<%=ListBox1.ClientID%>');
var product = lb.options[lb.selectedIndex].text;
CallServer(product, "");
}
function ReceiveServerData(rValue)
{
document.getElementById('<%=ResultsSpan.ClientID%>').innerHTML = rValue;
}
這樣,如果MasterPage的名稱(或實際頁面)更改代碼仍然可以使用。
基本上,ASP.NET進程解析頁面並用客戶端上正確的控件名稱替換<%=%>指令。
如果您有嵌套控件,此方法也可以工作。在你的例子中,如果你有一個嵌套在另一個面板內的控件,呈現的ID可能看起來像MASTERPAGEPREFIX_CONTAINERCONTOLNAME_ListBox1,然後你的解決方法將失敗。
作爲一般原則,它通常被認爲是一個壞主意,在您的標記「硬碼」客戶端的標識 - 讓ASP.NET進程爲您處理
這種技術是不是一個好主意。從長遠來看,你的代碼將最終破裂。您應該使用@Rich Andrews提供的解決方案和建議。 – rtpHarry 2010-11-23 20:46:52