Использует jquery для вызова службы данных WCF из пользовательского интерфейса, нарушая шаблон MVC - PullRequest
3 голосов
/ 26 мая 2010

Я довольно новичок в ASP.Net MVC 2 и понимаю саму схему MVC. Но мой вопрос заключается в том, как лучше всего заполнить выпадающие списки в пользовательском интерфейсе, придерживаясь шаблона MVC. Должен ли я проходить через контроллер?

Каждая статья, которую я видел, чтобы сделать это, показывает, как это сделать, используя javascript и jquery. У меня есть тестовое приложение, которое я переписываю в MVC2. У меня есть раскрывающиеся списки, работающие с jquery, в основном вызывающий WCF Data Service, который возвращает JSON, который заполняет раскрывающиеся списки. Мне кажется, что это обход контроллера и переход к модели, что строго нарушает схему MVC.

Или я здесь упускаю что-то очевидное. Ваши мысли или лучшие практики будут очень рады здесь.

Спасибо

Ответы [ 3 ]

3 голосов
/ 27 мая 2010

Одной из замечательных особенностей MVC является то, что контроллеры могут соединяться как «веб-сервисы» или сортировать. Это означает, что вы можете легко указать, например, тип возвращаемого значения «JsonResult» (вместо представления - ActionResult).

Среда MVC будет обрабатывать всю сериализацию за вас.

Вы можете легко вызвать метод действия контроллера из jQuery и заполнить раскрывающийся список.

В вашем примере я бы создал метод контроллера Json, украсил его некоторыми фильтрами настраиваемых действий (проверьте заголовки http, что это HTTP-запрос get json и т. Д.), Вызвал бы его из jQuery и связал с выпадающим списком.

0 голосов
/ 27 мая 2010

Думаю, вам лучше всего попробовать Просмотр моделей .

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

Ваша модель представления может иметь свойство IEnumerable<String> CityNames, которое затем загружается в раскрывающийся список в представлении.

0 голосов
/ 26 мая 2010

Если ваш раскрывающийся список является статическим (т. Е. Не каскадным раскрывающимся списком), то вы можете добавить свойство AvailableItems в вашу модель, установить его значение в контроллере и заполнить этот список. Если ваш список необходимо обновить на основе выбора других пользователей, вам необходимо перезвонить службе AJAX какого-либо типа.

В общем, если ваше приложение имеет код сценария, который выполняется на клиенте, этот код будет в ваших представлениях. Я лично не считаю это нарушением MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...