从母版页-如何在子页中找到可能存在也可能不存在的项目的clientID

From Master page - How to find the clientID of item in Child page which may or may not be there

本文关键字:存在 也可能 不存在 clientID 项目 母版页      更新时间:2023-09-26

我有以下设置:

  1. 主页
  2. 子页面
  3. 外部Javascript文件

在子页面中,我有时可以有一个名为'hiddenFoo'的隐藏控件。在js文件中,我有一个名为"hFoo"的变量,它应该包含hiddenFooClientID

现在我知道我可以将hFoo = "<%=hiddenFoo.ClientID %>";添加到每个子页面,但我想知道是否有可能在母版页面中做到这一点(注意hiddenFoo不是在每个页面上)。

** edit with answer **
1. 在我的主页javascript中我检查了'hiddenFoo'是否存在于我的内容中。
2. 如果返回的不是空白,我调用后面的代码来返回ClientID。

<script type="text/javascript">  
    if ('<%=MainContent.FindControl("hiddenFoo") %>' != '') {  
        hiddenFooID = "<%=GetHiddenFooClientID %>";  
    }  
</script> 
protected string GetHiddenFooClientID   
{  
    get {   
        Control hiddenFoo = MainContent.FindControl("hiddenFoo");  
        if (hiddenFoo != null) {  
            return hiddenFoo.ClientID;  
        }  
        return " ";  
    }  
}  

您可以实现FindControl方法的递归版本,或者选择一个已经可用的版本,比如这个。之后,在母版页后面的代码中,您可以创建如下属性:

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

并在标记上调用它:

hFoo = "<%=HiddenFooClientID %>";

您可以使用URL参数在页面之间传递变量。您仍然需要在每个子页面上声明变量。

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

从母版页到子页的链接应该像这样:"childPage.aspx?ClientID = XXX "