Пользовательский связыватель модели - получить переменные поста с тем же именем?
Я создаю пользовательский механизм связывания в 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(',');