Я только что сделал подобное упражнение.Я использовал ScriptMethod / WebMethod для обработки этого.Вот некоторый код:
Добавьте новый «Веб-сервис» в ваш проект, я назвал мой «Service.asmx» и сделайте так, чтобы ваш сервис выглядел примерно так:
namespace Some.Thing
{
[WebService(Namespace = "http://some.thing")]
[ScriptService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Suggestion[] GetSuggestions(string text, int count)
{
using (MyDataContext context = new MyDataContext())
{
return (from a in context.Airports
...
select new Suggestion()
{
ID = a.ID,
Text = a.ToString()
}).ToArray();
}
}
public struct Suggestion
{
public string ID { get; set; }
public string Text { get; set; }
}
}
}
Отредактируйте свойWeb.Config и добавьте эти строки, чтобы включить поведение WebMethod \ ScriptMethod:
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<system.web>
Проверьте свою службу, попытавшись посетить ее в браузере:
http://localhost/Service.asmx/Suggestions?text=abc&count=10
Затем вы можете позвонить своемуновый метод обслуживания из JavaScript, подобный следующему:
$("#" + fromTextBoxID).autocomplete(
{
source: function (request, response)
{
$.ajax(
{
url: "/Service.asmx/GetSuggestions",
type: "POST",
async: false,
contentType: "application/json",
data: "{ text: \"" + request.term + "\", count: 10 }",
success: function (data)
{
var items = new Array();
for (var i = 0; i < data.d; i++)
items[items.length] = { value: data.d[i].ID, label: data.d[i].Text };
response(items);
},
error: goTravel.HandleAjaxError
});
},
minLength: 1
});
Для получения дополнительной информации просмотрите эту статью на MSDN .