Основные вопросы, касающиеся использования Webmatrix и AJAX
Я экспериментировал и исследовал использование Webmatrix с AJAX в течение последних нескольких дней, и, к сожалению, я не могу найти достаточно информации, чтобы помочь мне начать работу над моим проектом. Я надеюсь узнать больше о том, как все это работает в принципе, чтобы прогрессировать. Надеюсь, это также будет полезно для тех, кто узнает об этом. Буду признателен за любые советы и полезные ссылки.
(Извините за длину этого поста.)
Немного предыстории моего проекта:
Я использую класс CS для сборки нескольких List<int>
и List<double>
с использованием данных из базы данных и некоторых полусложных алгоритмов. Эти списки содержат информацию о ряде видео, и я использую эти списки, чтобы помочь мне создать небольшое видео приложение, которое в конечном итоге воспроизводит сгенерированный список видео с html5 video и canvas. Я тестировал этот проект в нескольких различных средах и средах программирования (используя только javaScript, используя openFrameworks и C++, используя php с базой данных и ajax, javaScript и т. Д.). У меня не было никаких проблем с использованием ajax раньше, но я застреваю, пытаясь реализовать концепцию в Webmatrix.
Какова связь между типами данных C#, JSON и javaScript?
Решение, которое я использовал с php, было примерно таким:
$sequenceData = array("array1" => $dataArray1,
"array2" => $dataArray2,
"array3" => $dataArray3,
"array4" => $dataArray4);
echo json_encode($sequenceData);
а затем использовал AJAX для использования этих массивов в javaScript. Я не знаю, хорошее ли это решение, но оно было достаточно простым для меня, и оно сработало.
Сейчас я пытаюсь найти хорошее решение для этого, используя типы данных C#. (Я действительно изучил C# только в последние несколько недель, поэтому, пожалуйста, потерпите меня.) Моя текущая мысль заключается в том, что мои данные будут, например, List<Dictionary<string, string>>
преобразовывая мои данные в строки, чтобы они все были одинаковыми, но это кажется немного неуклюжим, и вот где мне интересно, как JSON обрабатывает эти типы данных, а также, если (как) javaScript их распознает? В качестве альтернативы было бы более элегантно использовать простой класс (struct?), Чтобы я мог передавать данные как один объект. Я все еще использовал бы списки в этом случае, поэтому остается вопрос, будет ли это работать? Будет ли javaScript объектом C#? Списки обрабатываются как массивы? Я использовал Google и Lynda.com, чтобы получить больше информации о C#, json и т. Д., Но я не смог полностью понять, как эти вещи работают.
Кодировка JSON в Webmatrix
Я использовал в основном два источника для понимания помощника JSON и получения закодированных данных через AJAX:
с сайта microsoft.com и mikesdotnetting.com (ссылки на конкретные статьи)
К сожалению, я пока не смог успешно передать данные из моих файлов cshtml. Я искал больше информации о помощнике JSON, но опять же не нашел много полезной информации в Интернете. Использование jQuery $.ajax
(который я использовал в моем предыдущем испытании, вместе с PHP), а также $.getJSON
(который используется в приведенных выше ссылках) функций, я не смог успешно извлечь данные JSON из файла cshtml. Я подумал, что код, продолжающийся от javaScript с AJAX, не будет существенно отличаться от того, когда я ранее использовал php для создания передаваемых данных, поэтому мне интересно, не ошибаюсь ли я при кодировании данных JSON.
Я в основном пробовал эти две концепции, как видно на mikesdotnetting.com
var json = Json.Encode(data);
Response.Write(json);
Json.Write(data, Response.Output);
Все, что я сделал с php, было echo json_encode($sequenceData);
и все, кажется, работает само по себе, поэтому мне интересно, если я здесь не так, и как php и webmatrix/razor/ C# работают здесь по-разному.
Надеюсь, этот пост не слишком расплывчатый. Я попробовал много разных битов кода и методов, чтобы приблизиться к этому, поэтому я не прикрепил больше кода, который я использую. Я полагаю, что мне нужно больше адаптировать весь процесс и концепцию к тому, как это было бы наиболее целесообразно сделать в Webmatrix, C# и т. Д., А не просто "переводить". Мне бы очень хотелось больше узнать об этих темах (помощник JSON, связь с AJAX, типы данных в процессе и т. Д.) И надеюсь, что люди смогут поделиться некоторыми советами.
(Спасибо, если вы все еще со мной в конце этого поста)
1 ответ
В C# существует несколько предопределенных примитивных типов данных: int, string, double, byte, datetime и т. Д. Вы можете использовать класс для определения своего более сложного типа данных. Пример объявления типа данных Video может выглядеть следующим образом:
public class Video
{
public int VideoId {get;set;}
public string Title {get;set;}
public DateTime ReleaseDate {get;set;}
}
Вы можете создать экземпляр класса Video, используя следующий синтаксис:
Video myVideo = new Video{
VideoId = 1,
Title = "Spartacus",
ReleaseDate = new DateTime(1960, 12, 8)
};
Все идет нормально. Вы можете создать множество видео и сохранить их все вместе с программной точки зрения в какой-то коллекции. У вас есть несколько вариантов для типа коллекции, которую вы используете, но общий List<T>
распространено T
обозначает тип, который содержит список; в этом случае T
является Video
:
List<Video> videoCollection = new List<Video>();
videoCollection.Add(myVideo);
Поскольку тип, содержащийся в списке, объявлен, список называется строго типизированным. Массивы не сильно типизированы. Они могут содержать любые объекты.
В WebMatrix (или, точнее, в ASP.NET Web Pages Framework) у помощника Json есть методы, которые принимают ваш объект или коллекцию и сериализуют их в JSON. Каждое JSON-представление видео будет иметь свойства VideoId, Title и ReleaseDate:
[{"VideoId":1,"Title":"Spartacus","ReleaseDate":"\/Date(-286070400000)\/"}]
С этого момента вы можете работать с объектами JSON, используя jQuery в файле подкачки, точно так же, как в PHP.
В статье, на которую вы ссылаетесь на моем сайте, данные получены из базы данных, и за кулисами скрывается невиданная магия. Данные преобразуются в dynamic
тип со свойствами, добавляемыми во время выполнения платформой на основе столбцов данных, полученных базой данных.