WebMethod没有被调用。 ASP.NET C#

时间:2011-04-22 19:25:41

标签: c# asp.net web-services

我使用了一个非常简单的使用ajax进行自动完成的示例,无法让我的工作。我踩了代码,看起来它永远不会进入我的webmethod。还有什么可以检查的?

的.aspx

    <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>

<asp:TextBox ID="txtFrom" runat="server">
</asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtFrom" MinimumPrefixLength="1" ServiceMethod="GetSuggestions">
</ajaxToolkit:AutoCompleteExtender>

.aspx.cs

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string[] GetSuggestions(string prefixText, int count, string contextKey)
{
    string[] members = { "Nick", "John", "Bob" };

    return (from m in members where m.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) select m).Take(count).ToArray();
}

我创建了一个webservice来代替将我的方法直接放在类中,但我得到了相同的结果。

2 个答案:

答案 0 :(得分:2)

public static string[] GetSuggestions(string prefixText, int count, string contxtKey)

你写了 contxtKey 而不是 contextKey

请记住,签名(类型,参数名称,返回类型)has to match exactly

  

如果使用上下文密钥,则应该   与...有相同的签名   附加参数名为contextKey   字符串类型:

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] GetCompletionList(
    string prefixText, int count, string contextKey) { ... }
  

请注意,您可以替换   “GetCompletionList”,名称为   你的选择,但返回类型和   参数名称和类型必须完全正确   匹配,包括案例。

答案 1 :(得分:1)

您的scriptmanager似乎没有配置为允许页面方法,但您的“GetSuggestions”是一种页面方法(在.aspx.cs上)而不是服务调用(在.asmx上)。

尝试编辑脚本管理器,如下所示:

<asp:ScriptManager
ID=”scriptManager”
EnablePageMethods=”true”
runat=”server” >

如果要将方法调用移动到.asmx,则应修改AutoCompleteExtender以引用.asmx文件,如下所示:

<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtFrom" MinimumPrefixLength="1" ServiceMethod="GetSuggestions" ServicePath="AutoCompleteService.asmx">
                    </ajaxToolkit:AutoCompleteExtender>

我认为你只是尝试将这两种技术融合在一起并最终结束了。