2014-01-24 5 views
1

Я довольно новичок в MVC, но в моем исследовании указано, что я могу либо использовать способ по умолчанию для отправки запросов на контроллер, через формы, либо я могу использовать запросы jQuery и Ajax.Ajax просит vs normal mvc

Общепринятая практика использования Ajax все время, так что я могу избежать перезагрузки страниц, когда я этого не хочу, и разрешить загрузку значков?

Следует ли смешивать два способа отправки данных на контроллер? По-моему, использование форм проще, так как вам, как мне кажется, нужно будет использовать все ваши свойства модели вручную в Ajax, но, похоже, у вас Haddin больше гибкости.

Мне интересно, является ли эта модель (с использованием преимущественно запросов Ajax) хорошей идеей.

ответ

2

Я думаю, что в основном это вопрос предпочтения, но я думаю, что использование AJAX с jQuery обеспечивает более гибкое и гибкое приложение. Кроме того, это не должно быть больше работы. Для того, чтобы представить все свои свойства модели, которые вы имели в форме к контроллеру вам просто нужно будет сделать что-то вроде:

$.ajax({ 
    url: "SomeController/SomeMethod", 
    data: $('#FormName').serialize(), //this will basically do what MVC would have done if you used forms and a submit button 
}); 

А на контроллере модель связующий будет связывать все свои свойства обратно к модели ,

Таким образом, вы бы:

public ActionResult SomeMethod(SomeModel someModel) 
{ 
    // do work with your tightly bound model! 
    return View(); 
} 

Но ... если вы просто хотите знать Доводы о AJAX и некоторые из СВОД, что вы также будете сталкиваться то здесь вы:

PRO:

Во многих случаях связанные страницы на веб-сайте состоят из большого количества контента, который является общим между ними. Используя традиционные методы, этот контент необходимо будет перезагрузить по каждому запросу. Однако, используя Ajax, веб-приложение может запрашивать только контент, который необходимо обновить, что резко сокращает использование полосы пропускания и время загрузки.

Использование асинхронных запросов позволяет пользовательскому интерфейсу веб-браузера клиента быть более интерактивным и быстро реагировать на входы, а разделы страниц также могут быть перезагружены по отдельности. Пользователи могут воспринимать приложение более быстрым или более отзывчивым, даже если приложение не изменилось на стороне сервера.

Использование Ajax может уменьшить количество подключений к серверу, так как только сценарии и таблицы стилей нужно запрашивать только один раз.

Состояние может поддерживаться на любом веб-сайте. Переменные JavaScript сохраняются, потому что не нужно перезагружать главную страницу контейнера.

CON:

Благодаря своей динамической природы, интерфейсы Ajax зачастую сложнее развиваться, когда по сравнению со статическими страницами.

Страницы, динамически создаваемые с использованием последовательных запросов Ajax, автоматически не регистрируются в механизме истории браузера, поэтому нажатие кнопки «назад» браузера не может вернуть пользователя в более раннее состояние страницы с поддержкой Ajax, но может вместо этого вернуться их до последней полной страницы, посетившей ее. Методы обхода включают использование невидимых IFrames для запуска изменений в истории браузера и изменения якорной части URL-адреса (после #) при запуске Ajax и отслеживании изменений.

Обновления динамических веб-страниц также затрудняют пользователю возможность закладки определенного состояния приложения. Решения этой проблемы существуют, многие из которых используют идентификатор фрагмента URL-адреса (часть URL-адреса после «#»), чтобы отслеживать и разрешать пользователям возвращаться к приложению в заданном состоянии.

Поскольку большинство веб-сканеров не выполняют JavaScript-код, публично индексируемые веб-приложения должны предоставлять альтернативные средства доступа к контенту, который обычно извлекается с помощью Ajax, чтобы позволить поисковым системам индексировать его.

Любой пользователь, браузер которого не поддерживает JavaScript или XMLHttpRequest, или просто отключил эту функцию, не сможет правильно использовать страницы, зависящие от Ajax. Аналогично, устройства, такие как мобильные телефоны, КПК и устройства чтения с экрана, возможно, не поддерживают требуемые технологии. Считыватели, которые могут использовать Ajax, все еще не смогут правильно прочитать динамически созданный контент. Единственный способ позволить пользователю выполнять функции - это вернуться к методам, отличным от JavaScript. Этого можно добиться, убедившись, что ссылки и формы могут быть правильно решены и не полагаться исключительно на Ajax. В JavaScript представление формы может быть остановлено с «return false».

Такая же политика происхождения предотвращает использование некоторых методов Ajax в разных доменах, хотя W3C имеет проект объекта XMLHttpRequest, который бы включил эту функциональность.

Как и другие веб-технологии, у Ajax есть свой набор уязвимостей, которые должны решать разработчики. Разработчикам, знакомым с другими веб-технологиями, возможно, придется изучить новые методы тестирования и кодирования для написания безопасных приложений Ajax.

Интерфейсы с интерфейсом Ajax могут значительно увеличить количество пользовательских запросов на веб-серверы и их серверы (базы данных или другие). Это может привести к увеличению времени отклика и/или дополнительных потребностей в оборудовании.

what are the advantages and disadvantages of making ajax calls using jquery?

1

Это способ работы приложения с одной страницей (SPA). Я бы предложил использовать инфраструктуру данных javascript, такую ​​как AngularJS (шаблон MVW), Backbone (шаблон MVC), KnockoutJS (шаблон MVVM).

У вас нет (не должно) дублировать свои модели в слое данных javascript. Вещь, которую вы потеряете, - это взгляд на шаблоны MVC.net.

Вы можете смешивать оба, но тогда вы получаете недостатки обеих сторон.

Вот официальный Microsoft SPA демо построен с KnockoutJS:

http://www.asp.net/single-page-application/overview/introduction/knockoutjs-template

Я работаю на SPA в данный момент со всеми в AJAX (кроме проверки подлинности), ИМО это дает новое большое измерение UX ,

0

Это очень распространенная практика, и я думаю, что одна из причин, почему Microsoft введена WebAPI, так что вы на самом деле не использовать их MVC, но все зависит от вашего АЯКС вызова или другие JS рамки, как уголек/угловой js.

Требуется больше времени для настройки/кода ajax, но он работает быстрее, чем пользователь видит.