0

我想使用AjaxToolKit AutoComplete功能。标签的语法是:

<ajaxToolkit:AutoCompleteExtender ID="autoComplete1" runat="server"
  EnableCaching="true"
  BehaviorID="AutoCompleteEx"
  MinimumPrefixLength="2"
  TargetControlID="myTextBox"
  ServicePath="AutoComplete.asmx"
  ServiceMethod="GetCompletionList" 
  CompletionInterval="1000"  
  CompletionSetCount="20"
  CompletionListCssClass="autocomplete_completionListElement"
  CompletionListItemCssClass="autocomplete_listItem"
  CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"
  DelimiterCharacters=";, :"
  ShowOnlyCurrentWordInCompletionListItem="true">
  <!-- Some formatting code -->
</ajaxToolkit:AutoCompleteExtender>

有属性 ServicePath 和 ServiceMethod 可以帮助标签从中获取数据。ServiceMethod 具有架构:

[WebMethod]
public string[] GetCompletionList(string prefixText, int count)

该方法只需要两个参数。对于某些业务逻辑要求,我想将三个参数发送到方法:

[WebMethod]
public string[] GetCompletionList(string type, string prefixText, int count)

如何传递这第三个参数并在服务方法中接受它进行处理。我的结果将取决于此类型参数。我怎样才能做到这一点?提前致谢。

4

2 回答 2

1

您可以将 contextKey 作为第三个参数传递。

在设置 ajaxToolkit:AutoCompleteExtender 时,添加键值对 UseContextKey="True",例如

<ajaxToolkit:AutoCompleteExtender ID="autoComplete1" runat="server"
  UseContextKey="True"
  EnableCaching="true"
  BehaviorID="AutoCompleteEx"
  MinimumPrefixLength="2"
  TargetControlID="myTextBox"
  ServicePath="AutoComplete.asmx"
  ServiceMethod="GetCompletionList" 
  CompletionInterval="1000"  
  CompletionSetCount="20"
  CompletionListCssClass="autocomplete_completionListElement"
  CompletionListItemCssClass="autocomplete_listItem"
  CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"
  DelimiterCharacters=";, :"
  ShowOnlyCurrentWordInCompletionListItem="true">
  <!-- Some formatting code -->
</ajaxToolkit:AutoCompleteExtender>

在调用服务方法之前将上下文设置为您想要的任何字符串:

function setContextKey() {
    text = 'my type information';
    $find('<%=autoComplete1.ClientID%>').set_contextKey(text);
}

然后在后面的代码中,您可以访问该 contextKey:

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
    string myType = contextKey;
}
于 2014-10-17T22:50:19.590 回答
0

您不能添加第三个参数。但是您可以通过存储然后从Session或检索它来读取此参数信息Request,通过从 访问它们HttpContext.Current,因为您处于静态方法中。

于 2013-02-28T14:15:11.493 回答