如何在用户控件中使用 AutoCompleteExtender?
How to use an AutoCompleteExtender from within a user control?
我创建了一个用户控件,我计划在每次用户编辑某些内容时使用它,并在其中调用用户控件的常规 ASPX 页面。用户控件包含一些文本框和一个 AutoCompleteExtender。除了 Extender,一切正常。我已经在许多其他 APSX 页面中使用过它并且非常有效,但由于某种原因它似乎在这里不起作用。调试后,通过chrome,我发现我无法访问方法(405)。经过几天的清理,互联网,我发现了这个:
"A callable page method is a public static (or Shared in Visual Basic®
.NET) method defined in the codebehind class and decorated with the
same WebMethod attribute used for Web service methods. At present,
this is limited to ASPX pages-both inline and codebehind code-but
might be extended in the future to user controls and custom controls."
此外,偶然发现其他论坛建议使用 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
(用户控制它自己) 并且 none 有效。
这是网络方法:
[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上的一个方法。
我创建了一个用户控件,我计划在每次用户编辑某些内容时使用它,并在其中调用用户控件的常规 ASPX 页面。用户控件包含一些文本框和一个 AutoCompleteExtender。除了 Extender,一切正常。我已经在许多其他 APSX 页面中使用过它并且非常有效,但由于某种原因它似乎在这里不起作用。调试后,通过chrome,我发现我无法访问方法(405)。经过几天的清理,互联网,我发现了这个:
"A callable page method is a public static (or Shared in Visual Basic® .NET) method defined in the codebehind class and decorated with the same WebMethod attribute used for Web service methods. At present, this is limited to ASPX pages-both inline and codebehind code-but might be extended in the future to user controls and custom controls."
此外,偶然发现其他论坛建议使用 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
(用户控制它自己) 并且 none 有效。
这是网络方法:
[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上的一个方法。