繁体   English   中英

如何从用户控件中使用AutoCompleteExtender?

[英]How to use an AutoCompleteExtender from within a user control?

我创建了一个用户控件,我计划在其中每次用户编辑某些内容时都使用该控件,并创建一个常规的ASPX页面,我将其称为用户控件。 用户cotrol包含一些文本框和一个AutoCompleteExtender。 除了扩展器之外,其他所有东西都可以正常工作。 我在许多其他APSX页面中都使用了它,并且像一个超级按钮一样工作,但是由于某种原因,它似乎在这里不起作用。 调试后,通过chrome,我发现我无法访问该方法(405)。 经过数天的整理,通过互联网,我发现了这一点:

“可调用页面方法是在代码隐藏类中定义的公共静态方法(在VisualBasic®.NET中为Shared),并使用与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" />

我已将服务路径更改为~/InterventionsWebService.asmx (位于同一目录中的Web服务), CreateEdit.aspx (我称为用户控件的页面)和CreateEdit.ascx (用户控件是自已的),但均CreateEdit.ascx

这是网络方法:

[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>();
}

我也尝试过使其成为静态方法,但仍然无法正常工作。 我在var bbq = 0处有一个断点,但由于(405)错误而没有命中。 任何解释都很好,谢谢。

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

我将WebMethod放在网页上,并用它来调用UserControl上的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM