Основные вопросы, касающиеся использования 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 тип со свойствами, добавляемыми во время выполнения платформой на основе столбцов данных, полученных базой данных.

Другие вопросы по тегам