Задать вопрос
@vily

Как в ASP.NET MVC избежать дублирования кода в JS и HTML (Razor)?

Добрый день!

На странице есть список (ul) с элементами li = checkbox + label + hidden (id). Также есть checkbox, который должен фильтровать элементы списка:

@Html.CheckboxFor(m=>m.Filter) 
 <ul>
 @for (int i = 0; i < Model.Data.Count(); i++)
{
<li>
         @Html.HiddenFor(m=>m.Data[i].Id)
         @Html.CheckBoxFor(m=>m.Data[i].Checked)
         @Html.DisplayFor(m=>m.Data[i].Name)
</li>
}
</ul>


Фильтрация списка будет происходить без перегрузки страницы. Добавляю скрипт, в котором через jquery ajax обновляю элементы списка по клику на checkbox
$.ajax({
        url: '/Controller/GetData',
        dataType: 'json',
        traditional: true,
        data: { filter: checked},
        success: function(data) {
            dataList.empty();
            $.each(data, function(index, item) {
                var listItem = $('<li></li>');
                 var hidden= $('<input></input>', {
                     //init hidden data
                    'type' : 'hidden'
                });
                var checkbox = $('<input></input>', {
                     //init checkbox data
                    'type' : 'checkbox'
                });
                var label = $('<span></span>', {
                    // init label data
                });
                listItem.append(hidden);
                listItem.append(checkbox);
                listItem.append(label);
                dataList.append(listItem);
            });
        }
    });

По кнопке submit выбранные элементы списка передаются на сервер.

Вопрос: как избежать дублирования кода во вьюхе и скрипте? Имеется в виду в одном месте хранить структуру ul и каждого li.

Спасибо.
  • Вопрос задан
  • 2994 просмотра
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
FirstX
@FirstX
.net developer
Единственный путь избавления от такого "дублирования", это
1. либо полностью перемещать формирование html разметки нужного участка в javascript/jquery код (jqGrid пример)

2. либо полностью перемещать в серверный метод, который формирует частичное представление с нужной моделью данных

Иначе вы в ситуации, когда на странице вы можете навернуть абсолютно любую html разметку, но программный код вы не хотите учить и рассказать ему, что у вас там вообще есть и как с этим работать. Так можно делать, только в четкой и однозначной структуре, где есть определенные закономерности, которые можно распарсить и проанализировать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы