【问题标题】:Master page containing User Control with AutoCompleteExtender包含带有 AutoCompleteExtender 的用户控件的母版页
【发布时间】:2013-07-25 08:40:20
【问题描述】:

申请简介:

我正在创建一个包含母版页、子母版页和一些内容页的网站。

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

我在 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) 页面布局将会改变。

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

【问题讨论】:

  • 试试 ServiceMethod="yourPage.aspx/GetSourceList"
  • @kobe 我无法理解,你想说什么。但是当 FreddieH 将我指向一个 .cs 类时,我开始知道我应该做什么。你的观点也是正确的。谢谢。

标签: c# asp.net .net ajax


【解决方案1】:

尝试设置自动完成扩展器的 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>

【讨论】:

  • 嘿...谢谢...那行得通。最初我认为我只能在 ascx.cs 中编写代码隐藏代码。但这也奏效了。
猜你喜欢
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多