На самом деле вы можете избежать сериализации и синтаксического анализа, если ваш метод Page просто возвращает ваш объект.
Итак, это будет выглядеть так:
[WebMethod]
public static ViewModel GetTestData()
{
var viewModel = createOrGetMyViewModelObjectFromSomewhere();
return viewModel;
}
На стороне JavaScript это будетвыглядят так:
$.ajax({
type: 'POST',
url: '/blah/default.aspx/GetTestData',
data: "{}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (output) {
var viewModel = output.d;
ko.applyBindings(viewModel);
}
});
Итак, вам не нужно сериализовать его в .NET, и вам не нужно анализировать его на стороне клиента.Все это обрабатывается «сантехникой» с обеих сторон.Кроме того, важна передача data: "{}"
(или если вам нужны параметры, они бы пошли сюда).
Кроме того, если вы вызываете веб-сервис вместо Page Method, то вам нужно украсить класс с помощью[ScriptService]
атрибут.