包含带有AutoCompleteExtender的用户控件的母版页

本文关键字:控件 母版页 用户 包含带 AutoCompleteExtender | 更新日期: 2023-09-27 18:24:55

应用简介:

我正在创建一个网站,它有一个母版页,一个子母版页和一些内容页。

我创建了一些用户控件来在主主页面上显示信息。我已经在我的主主页上直接注册了这些控件,并指定了它们的位置。

我在ContentPlaceHolder中使用了一些内容页和其他母版页。

描述:

我在一个用户控件上有一个文本框,我想将其与AutoCompleteExtender一起使用,通过向用户显示相关结果来帮助用户查找特定文本。

以下是代码示例:

<asp:TextBox ID="TxtSource" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender
    ID="AutoCompleteSource" 
    TargetControlID = "TxtSource"
    MinimumPrefixLength="1"
    ServiceMethod="GetSourceList" 
    runat="server" UseContextKey="True">
</asp:AutoCompleteExtender>

自定义控制背后的代码:

[System.Web.Services.WebMethod(), System.Web.Script.Services.ScriptMethod()]
public static string[] GetSourceList(string prefixText, int count, string contextKey)
{
    string[] SourceList = {"Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II"};  
    return (from m in SourceList where m.StartsWith(prefixText.ToUpper()) select m).ToArray(); 
}

我不是在使用webservice,而是使用codeehind来调用该方法。

问题:

永远不会调用codeehind中的函数。

我知道我必须将函数保留在aspx文件中,但运气不好,我没有在aspx上添加控件,而是在主文件上添加控件。母版页再次被视为控件,而不是页面。

一种解决方案:

我可以在每个内容页面上添加自定义控件。

问题:

1) 没有代码的可重用性,这是我想要实现的。

2) 页面布局将被更改。

有没有其他解决方案,代码更改最少?

包含带有AutoCompleteExtender的用户控件的母版页

尝试设置自动完成扩展程序的ServicePath。

<asp:TextBox ID="TxtSource" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender
    ID="AutoCompleteSource" 
    TargetControlID = "TxtSource"
    MinimumPrefixLength="1"
    ServiceMethod="GetSourceList"
    ServicePath="yourpage.cs" 
    runat="server" UseContextKey="True">
</asp:AutoCompleteExtender>