Сценарий ASP.NET MVC, похожий на «Опубликовать свой ответ» в StackOverflow - PullRequest
1 голос
/ 07 февраля 2009

У меня есть требование добавить систему комментирования на страницу (аналогично «Опубликовать свой ответ» внизу любого SO вопроса). Каков оптимальный способ реализовать это? Должен ли я визуализировать частичное представление с помощью Ajax или просто передать данные Json на сервер? В последнем случае я не совсем понимаю, как мне добавить добавленный комментарий внизу существующих комментариев.

Я очень новичок в ASP.NET MVC и не совсем уверенно чувствую шаблоны ajax. Кроме того, я слышал, что основой ненавязчивого JavaScript является то, что ваша страница должна сначала разрабатываться без JavaScript и быть полностью функциональной, и только после этого разработчик должен добавить JavaScript и расширить возможности. Является ли это в целом правдой и верно ли это в приведенном выше конкретном случае?

Спасибо.

PS. Я использую jQuery.

Ответы [ 4 ]

3 голосов
/ 07 февраля 2009

Я бы обычно использовал JSON в качестве моего типа данных AJAX. JSON (нотация объектов JavaScript) работает так же, как XML, но использует примерно на 70% меньше данных . Вам также будет легче разобраться в вашем javascript. Вам не нужно инициализировать объекты даты / числа из xml!

{ "people": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

Спасибо IBM за пример

<people>
  <person>
    <firstName>Brett</firstName>
    <lastName>McLaughlin</lastName>
    <email>brett@newInstance.com</email >
  </person>
  <person>
    <firstName>Jason</firstName>
    <lastName>Hunter</lastName>
    <email>jason@servlets.com</email >
  </person>
  <person>
    <firstName>Elliotte</firstName>
    <lastName>Harold</lastName>
    <email>elharo@macfaq.com</email >
  </person>
</people >

Я обнаружил, что инфраструктура MVC JSON имеет некоторые недостатки в отношении сериализации, десериализации и игнорирования атрибутов членов. Я нашел проект Json.NET на codeplex. он заполняется, чтобы заполнить все пробелы в функциональности, которые не покрывает MVC JSON.

Итак, в вашем контроллере, я использую Json.NET, обратите внимание, что выводом является ContentResult и не имеет представление

 public ContentResult ProcessRequestAction(string Email, string Password)
 {
     Product product = new Product();
     product.Name = "Apple";
     product.Expiry = new DateTime(2008, 12, 28);
     product.Price = 3.99M;
     product.Sizes = new string[] { "Small", "Medium", "Large" };
     return Content(JavaScriptConvert.SerializeObject(product));
 }

Типичный код JQuery, для запроса JSON

      $.ajax({
            type: "POST", /* GET OR POST */
            url: "JSON_MVC_URL_HERE", /* your url here */
            dataType: "json", /* json or xml */
            data: null, /* JSON CODE HERE TO SET GET OR POST BACK PARAMS */
            success: function(data){
                alert(data.Name); /* Gets Name Element */
                alert(data.Expiry); /* Gets Expiry Element */
                alert(data.Price); /* Gets Price Element */
                jQuery.each(data.Sizes, function() { /* Get Each Size */
                    alert(this);
                });
            }
        });

$. GetJSON также работает, но отсутствует запрос http типа POST / GET

3 голосов
/ 07 февраля 2009

Посмотрите презентацию Фила Хаака для PDC, где он создает HaackOverflow:)

Получить видео здесь: http://channel9.msdn.com/pdc2008/PC21/

Он демонстрирует использование встроенной функциональности AJAX для отправки вопроса и автоматического добавления его в конец существующих вопросов.

0 голосов
/ 08 февраля 2009

Использовать disqus: http://www.disqus.com

0 голосов
/ 07 февраля 2009

в ответ на 2-й абзац:

да, я бы предложил разработку приложения без каких-либо ajax / js. убедитесь, что действия работают и работают правильно. затем добавьте ajax (для UX) позже. этот подход может также вдохновить вас на то, как приложение должно использовать метод без поддержки Ajax для пользователей, не поддерживающих js (например, мобильные телефоны)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...