从主页面 - 如何在子页面中找到项目的clientID,可能存在也可能不存在

时间:2013-05-31 14:14:40

标签: javascript master-pages

我有以下设置:

  1. 母版页
  2. 儿童页
  3. 外部Javascript文件
  4. 在Child页面中,我有时会有一个名为'hiddenFoo'的隐藏控件。 在js文件中,我有一个名为'hFoo'的变量,它应该包含ClientID的{​​{1}}。

    现在我知道我可以将hiddenFoo添加到每个子页面,但我想知道是否可以在主页面中执行此操作(请注意每页都不会hFoo = "<%=hiddenFoo.ClientID %>";)。< / p>

    **编辑回答**
    1.在我的母版页面javascript中,我检查了我的内容中是否存在“hiddenFoo” 2.如果返回的不是空白,我调用后面的代码返回ClientID。

    hiddenFoo

2 个答案:

答案 0 :(得分:1)

您可以实现FindControl方法的递归版本,或选择已有的版本,例如this one。之后在后面的母版页代码中,您可以创建如下属性:

protected string HiddenFooClientID
{
    get
    {
        Control hiddenFoo = FindControlRecursive("hiddenFoo");
        if (hiddenFoo != null)
        {
            return hiddenFoo.ClientID;
        }

        return String.Empty;
    }
}

并在标记上调用它:

hFoo = "<%=HiddenFooClientID %>";

答案 1 :(得分:0)

您可以使用URL参数将变量从一个页面传递到另一个页面。您仍然需要在每个子页面上声明变量。

var hFoo = "<%=Request.QueryString["ClientID") %>";

在母版页中,子页面的链接应如下所示:“childPage.aspx?ClientID = XXX”