H,
我的aspx页面有一个usercontrol,其中usercontrol包含一个按钮。 onclick of usercontrol中的按钮我试图触发javascript方法。因此,当我点击按钮以执行javascript时,我想从aspx页面访问文本框值。
类似
this.getElementbyID[txtbox].value
。
有可能吗?或者是否有任何其他方法可以从usercontrol访问aspx页面。
提前致谢, 帕
答案 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的属性运行良好。