从用户控件访问aspx值

时间:2011-12-06 13:31:29

标签: javascript asp.net

H,

我的aspx页面有一个usercontrol,其中usercontrol包含一个按钮。 onclick of usercontrol中的按钮我试图触发javascript方法。因此,当我点击按钮以执行javascript时,我想从aspx页面访问文本框值。

类似

this.getElementbyID[txtbox].value

有可能吗?或者是否有任何其他方法可以从usercontrol访问aspx页面。

提前致谢, 帕

3 个答案:

答案 0 :(得分:3)

是的,因为渲染整个页面后(aspx页面+用户控件)被视为一个页面。

因此,只要您知道要搜索的控件的客户端ID,就可以使用任何有效的javascript来访问该元素。

我会将此代码放在用户控件中

 <script type="text/javascript">
        $(document).ready(function () {
            $('#yourButtonID').click(function () {
                //search for your element
               alert( $('input[id$="TextBox1"]').val());
            });
        });
    </script>

希望这有帮助!

答案 1 :(得分:1)

在用户控件的代码隐藏中使用FindControl方法。假设.aspx页面具有TextBox1控件,并且.aspx页面是“所述”用户控件的父级,那么您可以在用户控件中的按钮的单击处理程序中添加以下行。

TextBox tx = (TextBox)Parent.FindControl("TextBox1");

答案 2 :(得分:0)

是的,有几种方法可以做到这一点。用户控件直接呈现给浏览器,因此您可以从任何位置通过ID访问元素。我会亲自这样做;您可以在后面的用户控件代码中添加属性:

public string TextBoxID
{
   get { return this.TextBox1.ClientID; }
}

然后在页面中,您可以使用以下方式访问客户端javascript中的ID:

document.getElementById('<%= ucUserControlID.TextBoxID %>').value

您将遇到的问题是,如果用户控件中的文本框位于包含母版页的页面中,则该ID将为ct100_contentplaceholder_somecontainer_usercontrolcontainer_textboxID(类似的内容)。避免这种情况的诀窍是使用类似document.getElementById("<%= TextBox1.ClientID %>")的方法,但只有当控件位于此语句所在的同一容器中时才有效。由于控件位于用户控件和页面中的JS中,因此返回客户端ID的属性运行良好。