我正在尝试使用javascript为网页中的控件调用WebMethod(GetData())。
<script type="text/javascript">
$(document).ready(function () {
//this selector needs fixed
$('<%= Control1.ClientID %>').GetData();
});
</script>
<tel:RadScriptManager ID="RadScriptManager1" runat="server" />
<tel:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1">
<uc1:Control ID="Control1" runat="server" />
</tel:RadAjaxPanel>
uc:控制代码:
[WebMethod()]
[ScriptMethod()]
protected void GetData()
{
//stuff happens here
}
我无法弄清楚要使用哪种选择器。我在页面上有多个控件,我想在不同的时间调用它们。我使用什么样的选择器或什么命令来运行这个WebMethod?
答案 0 :(得分:2)
据我了解,无法在子/用户控件上调用webmethod / pagemethod。
如果您要将此Web方法移动到父aspx,则需要执行以下操作:
jQuery.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{}',
dataType: 'json',
url: 'MyPage.aspx/SomePageMethod',
success: function(result){
alert(result);
}
});
答案 1 :(得分:0)
这将选择ID以您传递给它的ControlID结尾的元素,从而忽略asp.net预先添加到控件ID的任何额外文本
$("[id$='_ControlIDHere']")
编辑:我可能误解了这个问题,但如果你实际上只是在寻找一个选择器来获取对你的控件的引用,那么我的方法就可以了。
答案 2 :(得分:0)
您正在混合使用JavaScript和ASP.NET。即使你看到&lt; uc1:Control&gt; .aspx文件中的标记,这不是实际输出到浏览器的内容。控件必须输出一些有效的HTML代码,这是JavaScript实际看到的内容。
您应该查看生成的HTML代码(即右键单击 - &gt;查看源代码)并找到您的控件映射到哪个HTML元素,并根据您的发现构建一个新的选择器。