Пользовательский связыватель модели - получить переменные поста с тем же именем?

Я создаю пользовательский механизм связывания в ASP.NET, и в моем посте у меня есть пара переменных с одинаковым именем. Пример: website.com?person=1&person=3&person=6

В настоящее время я использую синтаксис request.Form.Get("name") для получения переменных, но он возвращает строку, а не список строк, которые мне нужны. Как я могу получить все переменные в списке?

2 ответа

Решение

Вы можете использовать этот код в связывателе модели:

var request = controllerContext.RequestContext.HttpContext.Request;
string[] values = request.Params.GetValues("Name");

Замечания:

  • Request.Params получает объединенную коллекцию QueryString, Form, Cookies, а также ServerVariables элементы, и таким образом вы можете использовать связыватель модели как для строки запроса, так и для данных формы.

  • GetValues получает значения, связанные с указанным ключом, из коллекции.

request.Form.Get("person") даст вам строку. Но если у вас более одного элемента формы с одним и тем же именемperson, он выдаст вам строку значений, разделенных запятыми, для элементов с именем person. Таким образом, вам нужно создать массив из этого с помощью Split() метод.

var s = request.Form.Get("person");  // s will have the value like "shyju,scott,sam"
var personArray= s.Split(',');
Другие вопросы по тегам