ДЕЙСТВИТЕЛЬНО ЛИ РЕГИСТРАЦИЕЙ является Словарь к возможному действию MVC.NET?

У меня есть форма, которая содержит серию полей как:

<input type="text" name="User[123]" value="Alice" />
<input type="text" name="User[456]" value="Bob" />
...

То, где индекс Пользовательского массива (123 и 456) является идентификатором, связалось со значением. Я пытаюсь обновить эти значения в контроллере. Мои взгляды состоят в том, что Словарь, который отображает идентификатор для именования, работал бы, но создание действия как:

public void Save(Dictionary<string, string> user) {
    // ...
}

результаты в пользовательском параметре, являющемся пустым.

Так, действительно ли передачей является возможный Словарь? или, есть ли другой метод для достижения этого?

10
задан Brenton Alker 19 April 2010 в 23:24
поделиться

3 ответа

Это возможно для списков, я уверен, что это переносится и на словари. Прочтите Привязка модели к списку Фила Хаака, чтобы понять, как работает привязка списка.

Вы должны уметь это сделать:

<input type="hidden" name="User.Index" value="123" />
<input type="text" name="User[123]" value="Alice" />

<input type="hidden" name="User.Index" value="456" />
<input type="text" name="User[456]" value="Bob" />
12
ответ дан 3 December 2019 в 16:09
поделиться

См. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx для получения информации о синтаксисе, необходимом для привязки к словарю. Обратите внимание, в частности, на пример привязки тикеров компании MSFT + AAPL примерно на полпути к этому посту.

7
ответ дан 3 December 2019 в 16:09
поделиться

Для ASP.NET MVC 2 используйте это:

<input type="hidden" name="User[0].Key" value="123" />
<input type="text" name="User[0].Value" value="Alice" />

<input type="hidden" name="User[1].Key" value="456" />
<input type="text" name="User[1].Value" value="Bob" />

Вам нужно дополнительное скрытое поле User [i] .Key. i - индекс, отсчитываемый от нуля. Он должен быть непрерывным.

когда вы моделируете привязку к словарю, вы фактически привязываетесь к ICollection > . Итак, вам нужны User [x] .Key и User [x] .Value (для воссоздания объекта KeyValuePair)

Ссылки

7
ответ дан 3 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

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