Где jQuery UI подходит для MVC?

Мне нужно разработать универсальный плагин поиска на основе jQuery для приложения ASP.NET MVC, которое я создаю, но я не могу понять, как он должен соответствовать или что лучше всего делать. Я хочу сделать следующее:

$().ready(function() {
    $('#searchHolder').customSearch('MyApp.Models.User');
});

Пока я реализовал конкретный интерфейс в Models.User, jQuery сможет взаимодействовать со службой отражения для общего создания соответствующего пользовательского интерфейса.

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

Итак, где это на самом деле? Есть ли другой способ структурировать свой плагин jQuery, чтобы он больше соответствовал идее MVC? Работает ли MVC, когда он масштабируется до своей собственной формы в пределах другой структуры MVC? Должен ли я просто игнорировать эти проблемы ради одного плагина?

Откат из-за того, что вопрос не относится к ASP.NET MVC.

tags2k 13.10.2008 13:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
1
2 166
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Я не уверен, что понимаю, чего вы пытаетесь достичь, но я бы создал соответствующий пользовательский интерфейс на сервере как часть вашего представления (например, как пользовательский элемент управления, который может отображаться на разных страницах), установите его display: none style и используйте JQuery на стороне клиента, чтобы показать его, когда пользователь нажимает на какую-либо ссылку или что-то еще.

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

Я создаю индивидуальный поисковый интерфейс с помощью отражения для каждого типа, поэтому я не могу заранее определить HTML. Таким образом, мне почти нужно структурировать мини-MVC внутри плагина, но я не могу понять, стоит ли оно того!

tags2k 13.10.2008 12:51

Почему бы вам не создать другой интерфейс на стороне сервера в пользовательском элементе управления в зависимости от вашего типа? Я бы нашел это, по крайней мере, намного проще, чем пытаться склеить DIV и INPUT в javascript.

liggett78 13.10.2008 13:33

Я хотел бы иметь возможность создать экземпляр интерфейса поиска в любом месте сайта для любого типа без необходимости заранее определять, как он будет выглядеть. Нужно искать заказы? $ ('# div'). customSearch ('Заказы'), работа сделана!

tags2k 13.10.2008 13:47

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

liggett78 13.10.2008 15:18

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

tags2k 13.10.2008 16:44

Я бы сказал, что вы должны сделать запрос к контроллеру, и контроллер должен выяснить, какое представление или части представления отображать и передать эту информацию представлению через модель.

Corin Blaikie 14.10.2008 18:18
Ответ принят как подходящий

Просто чтобы продолжить (я очень удивлен, что ни у кого не было никакого мнения по этому поводу), чтобы сохранить передовой опыт, я решил принять jTemplates.

Это позволяет мне запрашивать некоторый JSON в стиле модели у моего серверного контроллера и обрабатывать его, используя синтаксис, аналогичный тому, который я уже использовал бы в представлении, которое теперь поддерживает любой требуемый JavaScript UI, совместимый с MVC. Есть небольшие накладные расходы в том, что клиенту нужно будет запросить шаблон представления с сервера, но если это станет слишком медленным, я всегда могу немного пожертвовать и отправить его с начальным запросом JSON.

Подходите к этому так, как если бы у вас есть две отдельные системы с моделями, представлениями и контроллерами на сервере и (Javascript / DOM) моделями, представлениями и контроллерами на клиенте (браузере). Ajax - это всего лишь метод клиента для запроса услуг с сервера.

Мне кажется, что вам нужен partials, термин RoR, поэтому не уверен, что они существуют в том же формате в ASP.NET MVC. По сути, партиал - это часть представления, которая определена в собственном файле и может быть вызвана из любого места. Таким образом, в вашем контроллере поиска вы должны вытащить запрошенную модель, выполнить некоторое размышление, чтобы получить данные и сконструировать их в JSON, а также получить частичное представление для этой модели. Возможно, вам будет проще, если вы будете следовать соглашению об именах партиалов на основе имени модели, чтобы не иметь больших операторов switch или дополнительных файлов конфигурации.

Я могу ошибаться, но похоже, что вы немного беспокоитесь о вызове контроллера из Javascript и получении возврата HTML. Это совершенно нормально, это всего лишь случай, когда нужно правильно получить представление и убедиться, что вы не обрабатываете остальную часть страницы, а только то, что вам нужно для этого вызова (почему MVC намного лучше, чем UpdatePanel!)

поэтому я на самом деле много изучал это и обнаружил, что новый официально поддерживаемый плагин jquery tmpl может работать как механизм просмотра. У меня есть написал здесь учебник, как вы можете создать полную парадигму MVC / MVP в JavaScript

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

mtsr 05.12.2012 01:41

Другие вопросы по теме