Имам код, подобен на този:
[ScriptService]
public class Titles : WebService
{
List<Title> Title = new List<Title>();
SqlConnection connection;
SqlCommand command;
SqlDataReader reader;
[WebMethod()]
public List<Title> GetTitle()
{
var title = new List<Title>();
using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"]))
{
using (command = new SqlCommand("some query here", connection))
{
connection.Open();
using (reader = command.ExecuteReader())
{
int col1Index = reader.GetOrdinal("col1");
while (reader.Read())
{
title.Add(new Title(reader.GetString(col1Index)));
}
}
}
}
return title;
}
}
След това мога да използвам jQuery, за да получа горния код за връщане на XML или JSON, например
$.ajax({
url: "/webservices/titles.asmx/GetTitle",
contentType: "application/json; charset=utf-8",
dataType: "json",
Чрез промяна на jQuery dataType и contentType на XML, уеб-услугата по-горе ще върне XML вместо JSON.
Моят въпрос е, мога ли да използвам горепосочената уеб услугав стандартна C # asp.net страница, така че мога да извлечете стойностите и да използвам стойностите, обаче искам, т.е. нещо просто като да получите webservice да върне JSON и след това да получите C # към response.write го на екрана?
Отговори:
0 за отговор № 1По подразбиране ASMX връща SOAP, което е XML. Няма значение какво ще поискате, няма да бъде върнато.
В ASP.NET света имате по-широк набор от инструменти. Ако искате JSON (и XML?), Можете да използвате уеб API за връщане на данните. По подразбиране това е JSON, който трябва да работи тук. Има и магия в вътрешните части на ASP.NET, за да има данни за метода. Основната методология в уеб формите е AJAX, но можете да я свържете с JQuery, ако ви харесва по-добре. Всичко е в разбирането как се връща dat.
Но с ASMX, вие връщате XML под формата наSOAP. Виждал съм някой (преди години) да поеме вътрешността малко в уеб услугите и да върне JSON. Това беше голям клъдж. Той работеше, но не бих посъветвал това, когато има няколко начина за решаването му, без да се изключва вътрешността на ASP.NET.
Ще започна тук: http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/
Това е просто обяснение как да се използва JSON с JQuery в ASP.NET.
0 за отговор № 2
Можете да направите следното на сървърната страна
var results = (new Titles()).GetTitle();
// do stuff with results.
Имайте предвид, че това наистина не е целта на уеб услугите.
В aspx файл бихте искали:
<% var results = (new Titles()).GetTitle();
foreach(var r in results){%>
<div><!-- do stuff with each item in results --></div>
<% }%>
0 за отговор № 3
Със сигурност можете да консумирате уеб услуга чрез.aspx page - най-лесният начин да направя това е да използвам обекта WebClient в пространството на имената на System.Net чрез нещо като следния код:
WebClient serviceRequest = new WebClient();
string responseStr = "";
responseStr = serviceRequest.DownloadString(new Uri("http://www.yourwebserver.com/yourwebservices/YourService.svc/json/getwhateverdatayouneed/" + passInAParameter));
//I"m not really sure if these next 3 lines are needed, but to deserialize into a Data Table I had to do this string manipulation
responseStr = responseStr.Replace("\", "");
responseStr = responseStr.Replace(""[", "[");
responseStr = responseStr.Replace("]"", "]");
DataTable dtMyDataFromService = JsonConvert.DeserializeObject<DataTable>(responseStr);
Този пример също използва функцията Newtonsoft.Json DLL, която можете да изтеглите от Nuget - това е може би най-популярната библиотекасериализиране и де-serializng json в. NET. Ако приемете, че уеб услугата ви връща STRING (наистина не искате да използвате родните .NET типове данни в JSON-базирани уеб услуги), горният пример ще десериализира резултатите в .NET таблица с данни на вашата .aspx страница. правите това, на вашия въпрос, просто цикъл чрез таблицата с данни и Response.Write го на екрана (можете да напишете суров json само от Response.Write (responseStr)).
Надявам се това да помогне! - JM