AjaxAutoComplete не работает после перехода на C#
Мое автозаполнение отлично работает при использовании моего старого сайта, но не работает, когда я портировал на C# и Entity Framework. Приведенный ниже HTML является частью пользовательского элемента управления. Я поставил точки останова в коде веб-сервиса, и даже не похоже, что его вызывают. Я не знаю, где еще проверить, где перерыв. Любая помощь будет оценена. Благодарю.
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:TextBox ID="TextBoxDamName" runat="server" Columns="50"></asp:TextBox>
<asp:AutoCompleteExtender ID="TextBoxDamName_AutoCompleteExtender"
runat="server"
DelimiterCharacters=""
Enabled="True"
ServicePath="DamSafetyAutoComplete.asmx"
ServiceMethod="SelectDamNames"
FirstRowSelected="True"
MinimumPrefixLength="1"
CompletionInterval="200"
TargetControlID="TextBoxDamName">
</asp:AutoCompleteExtender></td>
namespace ExternalDamSafetySearch
{
/// <summary>
/// Summary description for DamSafetyAutoComplete
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class DamSafetyAutoComplete : System.Web.Services.WebService
{
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] SelectDamNames(string prefixText, Int32 count)
{
try
{
EnterprisePubEntities EE = new EnterprisePubEntities();
return EE.DamSafetyDatas
.Take(count)
.Where(c => c.DamName.StartsWith(prefixText))
.Distinct()
.OrderBy(c => c.DamName)
.Select(c => c.DamName)
.ToArray();
}
catch (Exception) { throw; }
}
}
}
1 ответ
Оказывается, я не направлял элемент управления в правильное местоположение для моего файла Webservice. Как только я исправил это, я все еще не получал результаты, даже при том, что я нажимал на метод в веб-сервисе. Оказывается, я не вернул результаты правильно. Я исправил это, повернув это
return EE.DamSafetyDatas
.Take(count)
.Where(c => c.DamName.StartsWith(prefixText))
.Distinct()
.OrderBy(c => c.DamName)
.Select(c => c.DamName)
.ToArray();
в
return EE.DamSafetyDatas
.Where(c => c.DamName.StartsWith(prefixText))
.Distinct().Take(count)
.OrderBy(c => c.DamName)
.Select(c => c.DamName)
.ToList.ToArray();
Мне также пришлось изменить местоположение. Take(количество), потому что это займет первое (количество = 10) из списка, а затем отфильтровать их, начиная с.