Рендеринг HTML в действиях контроллера - PullRequest
1 голос
/ 31 января 2011

У меня возникают проблемы с принятием решения о том, можно ли создавать HTML в действиях контроллера и предоставлять этот HTML обратно в вызовы AJAX с моей точки зрения (с использованием jquery).

Например, при выборе клиента с помощью jQuery Autocomplete, помимо простого получения идентификатора выбранного клиента, нам также необходимо создать форму отображения или редактирования для него. Мы могли бы:

  1. Имеют десятки заполнителей div с правильными идентификаторами и получают Client объект JSON из действия контроллера, а затем обновляют эти div с содержимым нашего объекта (очень подвержено ошибкам, много IF в нашем JS-коде, и др.),
  2. или вместо того, чтобы запрашивать Client объект JSON, лучше запросить подготовленный HTML и просто вставить его в представление (более привлекательное решение, логику перенесли в контроллер и проще в обслуживании - я скорее поддерживаю код C #, чем JS).

Как вы думаете, это допустимые варианты? Что делают большинство современных приложений?

  1. Хотя 2. будет отлично работать для формы отображения клиента, она будет работать для редактирования ?. Форма Eedit должна содержать элементы управления HTML input, потому что я хочу, чтобы свойства клиента отправлялись обратно, потому что когда они отправляются обратно в контроллер, я могу материализовать модель представления с ними.

Ответы [ 3 ]

2 голосов
/ 31 января 2011

Контроллер почти никогда предназначен для этого.

Решения:

  • Используйте определенный вид (будь то частичный) для достижения этого
  • Отправьте обратно JSON и создайте теги на стороне клиента с помощью jquery / JavaScript
  • Создайте пользовательский помощник HTML для выделения необходимых тегов и сценария.

Я бы лично выбрал 3, а затем 2.

0 голосов
/ 01 февраля 2011

Ваш контроллер должен передавать данные на ваш взгляд, не html .

Я бы лично использовал PartialViews и jQuery Load () для загрузки этих частичных представлений на основе предоставленных данных.

0 голосов
/ 31 января 2011

Разве вы не можете просто использовать форму Ajax для этого?

т.е.

1: отправить форму через jquery.

2: найти и вернуть частичное представление на основе того, что вы передаете в качестве параметра.

3: обновить соответствующий раздел.

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