0

我有以下设置:

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

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

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

** 使用答案编辑 **
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 " ";  
    }  
}  
4

2 回答 2

1

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

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

        return String.Empty;
    }
}

并在标记上调用它:

hFoo = "<%=HiddenFooClientID %>";
于 2013-05-31T14:35:05.037 回答
0

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

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

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

于 2013-05-31T14:31:21.700 回答