#javascript #ajax #asp.net-mvc #razor
#javascript #ajax #asp.net-mvc #razor
Вопрос:
В 95% случаев я возвращаю частичные представления на запросы ajax, отбрасывая ответ в предопределенное местоположение в существующем HTML.
Но теперь я хочу разработать последовательный подход к ответам ajax, и система частичного просмотра не всегда сокращает время (например, если я хочу отобразить дополнительные данные или сообщения об ошибках в ответе).).
Я колеблюсь между следующими 3 подходами, с плюсами / минусами для каждого.
Какой из них (ов) я выберу, окажет значительное влияние на мои базовые модели, подход к созданию плагинов JS и т. Д. Поскольку я буду развертывать подход по всему сайту, объем данных ответов ajax не является незначительным.
Я хотел бы получить отзывы от более опытных разработчиков:
- Подтверждение / опровержение / добавление к плюсам / минусам, как я их вижу
- Какие-либо подводные камни или ошибки, которых следует избегать?
- Я делаю ошибки — например, есть ли способы избежать «минусов»?
- Используете ли вы какой-либо из этих подходов в своих приложениях MVC? Что вы сочли лучшим и почему?
1. Верните HTML PartialView
Плюсы
- Быстрый и простой в реализации
- Отлично подходит, используя преимущества встроенной модульности MVC и шаблонов razor
- Обработка ответов в JS может быть последовательной и стандартизированной — мы всегда имеем дело с результатом HTML
Минусы
- Нет способа предоставить дополнительные данные или обратную связь об ошибках
- Негибкий в целом
- Недостаточно эффективно
2. Верните HTML как часть ответа JSON
Плюсы
- Наиболее полный и гибкий вариант
- Можно использовать razor для создания шаблонов представлений, допуская при этом дополнительные данные
- Обработка ответов в JS может быть частично стандартизирована, если мы используем
response.Errors
response.SuccessHtml
, и т.д.
Минусы
- Самый сложный в реализации — требует рендеринга razor views вне контроллера
- Предположительно, это самый «дорогой» вариант — накладные расходы на создание шаблонов для HTML-кода и физически большую часть данных в ответе
3. Возвращайте чистый JSON-ответ — без HTML
Плюсы
- Самый быстрый ответ с точки зрения размера данных
- Я видел, что этот подход рекомендован (не помню, где)
Минусы
- Не очень похоже на MVC — да, мы можем использовать mustache или аналогичный шаблон, но было бы лучше повторно использовать те же самые razor views, что и при обычной загрузке страницы
- Создание шаблонов Mustache может усложниться, если мы хотим начать использовать операторы if / else и другую логику в наших представлениях
- Несколько возможностей для стандартизации обработки ответов JS
Комментарии:
1. «Не очень похоже на MVC» … но ни одна из них не является большой тенденцией к одностраничным приложениям, если вы имеете в виду только .Net MVC. Весь вопрос не по теме из-за «в первую очередь на основе мнений»
2. Что ж, я хотел бы проверить плюсы / минусы подходов, как я их вижу. Возможно, я не подумал обо всем, и у меня могут быть некоторые неправильные базовые предположения. Я рассматриваю этот вопрос как основанный на опыте, а не только на мнении.
3. «Мало возможностей для стандартизации обработки ответов JS» … конечно, есть … используйте коды состояния ответа и обещания с ajax, которые отклоняются, когда коды не равны 200
4. @charlietfl спасибо, это именно тот отзыв, на который я надеялся