В представлении ASP.NET MVC 3, как я могу создать редактор для поля списка? - PullRequest
0 голосов
/ 01 сентября 2011

Я создаю форму в представлении ASP.NET MVC 3, в котором в одном поле указывается список целых чисел (соответствует List<int> в отредактированной модели).Как я могу создать это поле редактора в моем представлении?Я предполагаю, что есть помощники MVC 3, которые я могу использовать.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

В блоге Фила Хаака обсуждаются все аспекты использования привязки модели к списку: код контроллера, код представления, сложные и примитивные типы, привязка к словарю. Из первого абзаца этого сообщения в блоге связыватель встроенной модели MVC связывает List с просто передачей в контроллер количества параметров строки запроса (или формы при публикации) с таким же именем. Пример

<form method="get">
   <input type="checkbox" name="ints" value="1" />
   <input type="checkbox" name="ints" value="4" />
   <input type="checkbox" name="ints" value="2" />
   <input type="checkbox" name="ints" value="8" />
   <input type="submit" />
</form>

Это будет правильно связываться с

public ActionResult UpdateInts(List<int> ints) {

  return View(ints);
}

См. Эту запись в блоге для полной информации

0 голосов
/ 01 сентября 2011

Если вы хотите раскрывающийся список, вы можете использовать вспомогательный метод HTML.DropDownList. Это то, что вы хотите, или вам нужно отобразить список в виде упорядоченного / неупорядоченного списка HTML?

EDIT

Вы можете создать свою собственную функцию HTML Helper. Предполагая, что вы используете Razor, вы можете выполнить следующие шаги

1.) Создайте новый файл .cshtml в каталоге App_Code и назовите его как хотите (например, HTMLHelpers.cshtml)

2.) Запишите следующее в файл

@helper OrderedList(List<int> list) {
    <ul>
        @foreach (var item in list)
        {
            <li>@item</li>
        }
    </ul>
}

3.) Теперь, по вашему мнению, вы можете вызвать новую функцию. Например, напишите

@HTMLHelpers.OrderedList(Model)

2-е РЕДАКТИРОВАНИЕ

Вы также можете использовать Javascript для достижения этой функциональности. Knockout.js от Стивена Сандерсона - отличная библиотека, которая помогает вам привязать данные к элементам HTML.

Этот образец из документации knockout.js соответствует вашим потребностям.

Вы также можете просмотреть это сообщение в блоге от Стивена Сандерсона, в котором объясняется, как использовать Knockout.js со списком переменной длины и как отправить данные списка обратно на сервер.

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