1. C# / Говнокод #16490

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    public JsonResult MusicPlayer(DateTime date)
            {
                var order = OrdersRepository.FindAll().ToList();
                int play = 0;
                
                foreach (var item in order)
                {
                    if (item.Date<=date){
                        var date2 = date.ToString();
                        return Json(new { date2});
                    }
                    return Json(new { play });
                }
    
                return Json(new { play });
            }

    Отправление данных через Json

    Запостил: Emir, 06 Августа 2014

    Комментарии (32) RSS

    • О! Прикольно. Это типа анонимный класс создается? И полю play присваиватся локальное значение play ? Или как?
      Ответить
      • tirinox
        О! Прикольно. Это типа анонимный класс создается? И полю play присваиватся локальное значение play ? Или как?

        Скорее Анонимные типы создается
        Ответить
    • Многовато написано...
      public JsonResult MusicPlayer(DateTime date) {
      	var item=OrdersRepository.FindAll().FirstOrDefault();
      
      	return item!=null && item.Date<=date
      		? Json(new { date.ToString() })
      		: Json(new { 0 });
      }

      А вообще, что ЭТО должно делать?
      Ответить
      • Посылать Json в ASP.NET MVC в асинхронном запросе
        Ответить
        • Ты хотел сказать, оповестить клиента о наличии заказа в музыкальном проигрывателе?
          Круто...
          Всегда мечтал, чтобы мой музыкальный проигрыватель оповещал меня о заказах.
          Ответить
          • честно - вообще не понимаю что тут происходит. находим любой заказ, дата которого меньше указанной в запросе и возвращаем дату. Если хочется статистику - можно было получше придумать. Зачем дату отправлять строкой - хз. почему любой заказ - тоже хз
            Ответить
            • В том-то и проблема, что не любой, а только первый заказ.
              Ответить
              • По логике они добавляются по порядку. Поэтому будет либо первый либо пусто (ну да, ты так и показал). Получается так информируют о том, что в заказах что то есть. Тогда зачем передавать дату?
                Ответить
                • У меня только одно предположение:
                  Чтобы клиенту сложнее было подставить ответ, пока он не сделает первый заказ.
                  Ответить
            • Происходит вот что, если подробно: Я беру во вьюшке из инпута текущую дату через Json отправляю в OrdersController в акшн MusicPlayer, а там уже эту дату(date) (date делаем строкой чтобы можно было отправить через Json) сравниваю с датой в заказа (item.Date) которое в базе и если там была так (item.Date<=date) должно быть (item.Date>=date чтобы определить что это новый заказ). Короче если item.Date>=date то отправляем его, если нет тогда отправляем 0. Остальное JS ом обрабатываю если пришло date то перезаписываю инпут и проигрываю звук, если ноль останавливаю музыку.
              Ответить
              • >Короче если item.Date>=date то отправляем его, если нет тогда отправляем 0.
                А почему-бы не отправлять дату последнего заказа, а не дату пришедшую с клиента?

                Либо можно всегда отправлять дату последнего заказа. В таком варианте, можно задействовать eTag.
                Ответить
          • Извини что не отвечал, я недавно зарегистрировался, по коду немножко не попал, оповещает админа если клиент отправил заказ. При приходе нового заказа проигрывается звук ну типа как в mail.ru
            Ответить
      • new { 0 }
        не будет работать

        нужно имя филда указать в котором будет этот 0 хранится

        int zero = 0;
        new { zero }
        Ответить
        • Да я прям здесь написал, скопипастив первоисточник. Потом только заметил, что забыл типы массивов проставить...
          Конечно-же:
          new Int32[] { 0, };
          new String[] { date.ToString(), };
          Ответить
          • Тип можно не указывать

            new [] { 0 };
            new [] { date.ToString()};
            Ответить
            • Для ынтерпрайза - лучше указать. И вары не использовать.
              А то потом коллеги полкараулят в тёмном уголке, и встреча с тёмным властелином будет казаться не такой уж страшной карой...
              Ответить
              • Тут даже коню (и даже оранжевой пони) понятны типы.

                Кстати в коде то не массивы, а анонимные типы (не люблю их).
                Ответить
        • О_о. Это что за уличная магия, имеющая доступ к именам переменных?
          Ответить
          • Это из области варов, когда можно не указывать тип переменной передаваемой в массив.
            static void Main(String[] args)
            {
            	var result = ProcessCode();
            	var array = new { result };
            	Console.WriteLine(array.Any(p => p.ToString() == "quick") ? "fox" : "dog");
            }
            static String ProcessCode()
            {
            	return "quick";
            }


            И легонечко отрефакторив код - получаем логическую ошибку:
            static void Main(String[] args)
            {
            	var result = ProcessCode();
            	var array = new { result };
            	Console.WriteLine(array.Any(p => p.ToString() == "quick") ? "fox" : "dog");
            }
            static Int32 ProcessCode()
            {
            	return 1;
            }
            Ответить
            • >И легонечко отрефакторив код
              Не код, а всего лишь метод "ProcessCode"
              Ответить
            • не скомпилится же

              только так
              https://ideone.com/WeW2mb
              Ответить
              • Да блин...
                var array = new []{ result };


                Ща ещё пару часиков на работе посижу и домой поеду...
                А то уже косячить начинаю...
                Ответить
                • > Ща ещё пару часиков на работе посижу и домой поеду...
                  Как-то поздно для любой точки России.
                  Ответить
                  • у меня вообще 3 ночи. Время веселых монад!
                    Ответить
                  • У меня халява, жену с ребёнком отправил на дачу, а дома - только с WinRT ковыряться, но мне сегодня влом...
                    Так что можно поработать в своё удовольствие и никто домой не гонит ^_^
                    GMT +4
                    Ответить
                    • > поработать в своё удовольствие
                      А мы тут отвлекаем.
                      Надо будет говорить тише. Особенно - про весёлые монады.
                      Ответить
        • Тут уже не массив, тут анонимный тип
          Ответить

    Добавить комментарий