Где jQuery UI вписывается в MVC? - PullRequest
       20

Где jQuery UI вписывается в MVC?

4 голосов
/ 13 октября 2008

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

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 14 октября 2008

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

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

1 голос
/ 14 декабря 2010

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

1 голос
/ 14 октября 2008

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

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

0 голосов
/ 14 октября 2008

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

0 голосов
/ 13 октября 2008

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

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

...