将值从用户控件传递到父页面的奇怪问题

时间:2014-02-19 08:29:58

标签: c# javascript asp.net user-controls

我有一个用户控件,其中包含一些控件及其放到父页面。

在用户控件中单击服务器端按钮时,我正在调用方法。

当上面的按钮被点击到父页面的JavaScript函数时,我需要传递一个值。

我在用户控件中创建了一个私有变量及其公共属性。

单击按钮时,将一些字符串分配给公共属性。

在父aspx.cs页面中,我通过Page_Load中的用户控件ID检索了上述属性的值,并将其分配给父aspx页面中定义的隐藏变量。

现在,当我试图在Parent页面JavaScript函数中获取此隐藏变量的值时,它将变为空。

传递值的任何其他方法,首先我想到了Session var,但是Session var在JavaScript中不会有效。

以下是我尝试的代码:

UserControl ascx.cs页面:

private string _button1Clicked;
        public string Button1Clicked
        {
            get { return _button1Clicked; }
            set { _button1Clicked = value; }
        }

public void Button1_Click(object sender, EventArgs s)
        {
            PopulateOtherViews();
            Button1Clicked = "Button1Clicked";           
        }

父页面aspx.cs页面:

    protected void Page_Load(object sender, EventArgs e)
            {
              hiddenButton1Click.Value = filter.Button1Clicked;   
            }

父页面aspx页面:

<input type="hidden" id="hiddenButton1Click" runat="server" />
    function PageLoad()
    {
    var x = document.getElementById('hiddenButton1Click');//x.Value is "", empty
    if (x.value == "Button1Clicked") 
                         {
                            doOpenFilterCollapse();
                        }
                        else {
                            doCloseFilterCollapse();
                        }
    }
}

专家请在这里协助。任何指针都非常有帮助。

此致

阿努拉格

2 个答案:

答案 0 :(得分:0)

在JavaScript中试用

var x = document.getElementById('<%= hiddenButton1Click.ClientID %>');

而不是

var x = document.getElementById('hiddenButton1Click');

答案 1 :(得分:0)

你隐藏的ctl是runat="server"所以如果你检查页面元素,你会看到像ctl00_ +控件ID这样的东西。 因此,在您当前的JavaScript中,找不到hiddenButton1Click,因此您需要

'<%=hiddenButton1Click .ClientID%>'