使用母版页的客户端回调

时间:2010-08-30 05:49:18

标签: asp.net

我正在关注此示例:http://msdn.microsoft.com/en-us/library/ms178210.aspx

我可以让它只使用一个页面和一个代码,但是当我添加一个母版页时,这些示例无法正常工作。在我的母版页中,我有一个头部内容部分和一个正文内容部分。这没什么特别的。

如何使用母版页进行客户端回调?

2 个答案:

答案 0 :(得分:1)

更具伸缩性的方法是使用以下语法(也将ResultSpan替换为aspx面板)...

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进程会解析页面并替换&lt;%=%&gt;指令在客户端上具有正确的控件名称。

如果您有嵌套控件,这种方法也可以使用。在您的示例中,如果您将控件嵌套在另一个面板中,则呈现的ID可能看起来像MASTERPAGEPREFIX_CONTAINERCONTOLNAME_ListBox1,然后您的解决方法将失败。

作为一般原则,通常认为在标记中“硬编码”客户端ID是个坏主意 - 让ASP.NET进程为您处理

答案 1 :(得分:-1)

我得到了它的工作。

请务必修改此代码以考虑MasterPage contentId前缀:

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;
}