申请摘要:
我正在创建一个包含母版页,子母版页和一些内容页的网站。
我创建了一些用户控件来显示主母版页面上的信息。我已经在我的主母版页上直接注册了这些控件并指定了它们的位置。
我在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();
}
我没有使用网络服务,而是使用代码隐藏来调用方法。
问题:
永远不会调用代码隐藏中的函数。
我知道我必须将该函数保存在aspx文件中,但运气不好我不是在aspx文件上添加控件但在主文件和母版页上再次被视为控件而不是页。
一个解决方案:
我可以在每个内容页面上添加自定义控件。
问题:
1)没有代码可重用性,我想实现。
2)页面布局将被更改。
可以有任何其他解决方案,代码更改最少吗?
答案 0 :(得分:0)
尝试设置自动填充扩展程序的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>