3

我正在尝试使用 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?

4

3 回答 3

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);
  }
});
于 2011-01-27T20:42:15.450 回答
0

这将选择 ID 以您传递给它的 ControlID 结尾的元素,从而忽略 asp.net 附加到您的控件 ID 的任何额外文本

$("[id$='_ControlIDHere']")

编辑:我可能误解了这个问题,但如果你实际上只是在寻找一个选择器来获取对你的控件的引用,那么我的方法将起作用

于 2011-01-27T19:12:27.180 回答
0

您在这里混合了 JavaScript 和 ASP.NET。即使您在 .aspx 文件中看到 <uc1:Control> 标记,这并不是实际输出到浏览器的内容。控件必须输出一些 JavaScript 实际看到的有效 HTML 代码。

您应该查看生成的 HTML 代码(即右键单击 -> 查看源代码)并找到您的控件映射到的 HTML 元素,并根据您的发现构造一个新的选择器。

于 2011-01-27T19:21:22.430 回答