Matisumi: Если брать реальный проект на взлете, то после входа в моду методики Agile - разработчики быстро делают рабочий прототип и запускают в промышленную эксплуатацию. На этапе разработки прототипа порой отсеивается только несусветная чушь вроде циклических запросов в БД или вытягивание набора данных в приложение, а уже в приложении поиск и сортировка. После запуска приложения - анализируются нагрузки и время работы различных сегментов и после выявления узких мест уже можно делать какие-либо оптимизации.
JoraInTheSky: Вы пишете что вам надо в шапке обновить состояние корзины - это можно сделать в обработчике onSuccess. Видимо вы хотите конкретно обновлять состояние доп. запросом. А почему бы вместо возврата частичного View - вернуть Json с результатом запроса? убрать строку из представления и обновить состояние страницы новыми данными?
Ваш метод, согласно описанию должен вызываться при обращении по адресу Home/SaveGameInfo методом POST. Если маппинг входных параметров прошел корректно, а скорее всего это не так, так как у вас там dynamic тип и MVC не знает какие параметры куда мапить. Используйте нормальный тип модели
Artem Nim: Как минимум сложная событийная модель, которая:
а)плохо ложится на цикл обработки http-запроса,
б)забирает под себя контроль за формированием разметки, что усложняет кросс-браузерную верстку и js-разработку.
в)заставляет писать дополнительный код для маппинга входных параметров запроса в модели уровня приложения(потому что отсутствует само понятие модели)
Толстый Лорри: про object следует упоминать если нужно использовать только ToString(). А если полученный объект делает что-то типа DoSomething() - object поможет слабенько
hrvasiliy: Тогда я вам поясню что значит мой ответ - у вас появилась не очень хорошая идея и вы спрашиваете как ее реализовать. Я вам говорю - идея не очень, поясните что вы хотите сделать и что у вас за бизнес-логика, требующая такой реализации? Что вы хотите выиграть такими телодвижениями? Просто не зная что вас сподвигло на такие скрипты - сложно сказать как это лучше реализовать. Может все можно сделать вообще одним элементарным запросом или вы экономите на спичках, а мы тут обсуждаем как строку удалить через пинг после ее изменения.
Оскар Тельманов: На мой взгляд - дабы не плодить сущности когда есть User IPrincipal от baseController и еще один User от MyBaseController. В итоге один пользователь будет пинать одного , другой другого и в итоге получатся священные знания о том какой из них правильный. Пусть лучше будет один.
Ринат Бакиев: Нет конечно. Можете принимать стандарты на оформление кода и общие используемые приемы. Например запретить удалять строки из базы. Запретить использовать вложенные запросы. Общие решения о схеме базы конечно лучше принимать сообща и провести получасовое совещание. Но это не значит что программист по своей воле не захренячит что-то в проект. И тут всплывает мое предложение из первого сообщения - ревью. Если на этапе ревью другой программист заметит применение чего-то запрещенного в команде - задача откатится на переработку, а не уйдет в тесты и далее в бой. Ну это в идеале.
Ринат Бакиев: есть вариант проводить ретроспективы раз в 2-3 недели. Сесть и обсуждать "кто что думает". К примеру - "Есть такая то проблема, какие вы видите возможные решения?" в спорах и драках решаете "делать так". Через 2-3 недели встречаетесь и смотрите что из этого вышло. Обсуждаете новые проблемы
Ринат Бакиев: Ну вот от ошибок никуда не денетесь. Вопрос их количества и критичности. Можете активно применять авто-тесты, требовать покрытия юнитами максимального процента кода. Это зафиксирует правильность определенного поведения и в случае если тесты упадут(хоть один, пусть и в другой части системы) - будет явный звоночек что внесенные изменения могли заафектить что-то в другой части системы
Дмитрий: Может дублировать, может расширять. Может для базы нужно ФИО, а для слоев более близких клиенту - Фамилия Имя Отчество. Может быть в базе у вас поле login, а в представлении e-mail. Но вспомните что есть еще движение в обратном направлении. К примеру вам надо пользовательский ввод провалидировать. Мы не можете обвесить атрибутами модель уровня DAL, но более высокие модели можете. Соответственно маппинг делается 1 в 1, но логика немного различается
Дмитрий: А в этом случае вы хотите решения для коня в вакууме. Можете реализовать интерфейс IUserMapper который сущности уровня DAL будет преобразовывать в сущности уровня BL(например, слои могут отличаться).
Gagatyn: https://jsfiddle.net/fd9ntprz/1/ вот примерно набросал решение рекурсивно. В браузере не отработает, так как стэк переполнится, но думаю основную идею поймете
Хасан Хафизов: Ну это уже другой вопрос. И к обучению 7-летнего мальчика никакого отношения не имеет. Я могу сказать что не стану лидом в Google хотя бы потому что занимаюсь .NET-разработкой и если не сменю ориентиров - путь заказан. А уж что я в подписи написал - это отдельный вопрос. Писать туда "гуру" или "ниндзя" хотя бы из скромности не стал бы.