0

Я пишу вид Razor в ASP.NET MVC4.Создание динамических элементов управления в итеративном EditTemplate

У меня есть список объектов, которые я покажу. В настоящее время я использую @ Html.EditorFor() с EditTemplate, определенным для списка моделей данных.

Во-первых, я хотел бы условно отобразить/скрыть элементы управления в шаблоне редактирования с помощью jquery, но я не уверен, где должен жить сценарий (возможно, в шаблоне редактирования?) И как он может выбирать только связанные элементы управления в текущая итерация шаблона редактирования.

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

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


код выглядит примерно так:

В главном окне:

@Html.EditorFor(vm => vm.ListOfChildViewModels) 
<button type="button" class="btn" id="btnAddViewModel">Add view model</button> 

EditorTemplate:

@MyNamespace.Web.ViewModels.VMType 

@Html.DropDownListFor(vm => vm.SelectorProperty, Model.SelectorOptions) 

// This checkbox should only get displayed if the dropdown has selectedIndex == 0 
@Html.CheckBoxFor(vm => vm.Option1) 

// This checkbox should only get displayed if the dropdown has selectedIndex == 1 
@Html.CheckBoxFor(vm => vm.Option2) 

// Etc... 
+0

Пробег через ViewData.TemplateInfo.HtmlFieldPrefix во время поиска google для ответов на эту проблему. Я, вероятно, могу использовать это для решения этой проблемы, но мне все еще интересно, есть ли у кого-нибудь хороший шаблон/план того, как справиться с этим сценарием. –

ответ

0

Законченное делает обработку на стороне сервера, чтобы держать тяжелую там. Идентификаторы автоматически генерируются через EditTemplate в первый раз. Всякий раз, когда мне нужно добавить/удалить из списка, я передаю сериализованную форму на сервер в вызове AJAX. Затем сервер меняет запрос и передает обратно отображаемый HTML-список, который может быть заменен на клиентской стороне с использованием jquery.

Возможно, вы использовали связывание на стороне клиента для решения этой проблемы, но C# на сервере является более проверяемым и компилируемым на данный момент. К сожалению, стоимость - это круговые поездки на сервер и обратно, чтобы обновить список.

Смежные вопросы