Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在用户控件中使用AutoCompleteXtender?_C#_Asp.net_Autocompleteextender - Fatal编程技术网

C# 如何在用户控件中使用AutoCompleteXtender?

C# 如何在用户控件中使用AutoCompleteXtender?,c#,asp.net,autocompleteextender,C#,Asp.net,Autocompleteextender,我已经创建了一个用户控件,我计划在用户每次编辑某些内容时使用它,并在一个常规的ASPX页面中调用该用户控件。用户控制包含几个文本框和一个AutoCompleteXtender。除了扩展器外,其他一切都正常。我在许多其他APSX页面中使用过它,效果非常好,但由于某些原因,它在这里似乎不起作用。调试之后,通过chrome,我发现我无法访问该方法(405)。经过几天的互联网搜索,我发现: “可调用页面方法是公共静态方法(或在Visual Basic®中共享) .NET)方法,该方法在codebehin

我已经创建了一个用户控件,我计划在用户每次编辑某些内容时使用它,并在一个常规的ASPX页面中调用该用户控件。用户控制包含几个文本框和一个AutoCompleteXtender。除了扩展器外,其他一切都正常。我在许多其他APSX页面中使用过它,效果非常好,但由于某些原因,它在这里似乎不起作用。调试之后,通过chrome,我发现我无法访问该方法(405)。经过几天的互联网搜索,我发现:

“可调用页面方法是公共静态方法(或在Visual Basic®中共享) .NET)方法,该方法在codebehind类中定义,并用 与Web服务方法使用的WebMethod属性相同。目前, 这仅限于内联和代码隐藏代码的ASPX页面,但 将来可能会扩展到用户控件和自定义控件。”

此外,偶然发现其他论坛建议使用web服务而不是web方法。尝试了这个,仍然得到相同的(405)错误。我被困了将近一个星期,我已经没有选择了。这是一个糟糕的做法,这就是为什么你不能这样做?我所要做的就是让它保持在同一个用户控件和aspx上

以下是我在用户控件上使用扩展器的方式:

<aspx:AutoCompleteExtender ID="tbEntitiesAutoCompleteEx" runat="server"
      BehaviorID="tbEntitiesAutoCompleteEx" TargetControlID="tbEntity"
      UseContextKey="True" ServiceMethod="GetAutocompleteEntities"
      MinimumPrefixLength="3" CompletionSetCount="10" CompletionInterval="300"
      CompletionListCssClass="autoCompleteList"
      CompletionListItemCssClass="autoCompleteItem" 
      CompletionListHighlightedItemCssClass="autoCompleteHighlightedItem"       
      CompletionListElementID="divCodeAutoCompletePlacement"  
      OnClientPopulating="OnEntitiesPopulating" 
      OnClientPopulated="OnEntitiesPopulated" 
      OnClientItemSelected="OnEntitySelected"                                
      ShowOnlyCurrentWordInCompletionListItem="true" 
      FirstRowSelected="true" ServicePath ="~/InterventionsWebService.asmx" />
我也试着把它变成一个静态方法,但仍然不起作用。 我在
var bbq=0上有一个断点,但由于(405)错误,它从未命中。

任何解释都很好,谢谢。

我设法解决了我的问题。我删除了服务路径,将web方法放在调用ascx的aspx中,使web方法处于静态状态,并设法达到断点。

我将web方法放在网页上,并使用它调用UserControl上的方法

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public List<string> GetAutocompleteEntities(string prefixText, int count, string contextKey)
{
    var bbq = 0

    return new List<string>();
}