Передача массива оценивает в Запросе HTTP в.NET

Каков стандартный способ передать и обработать массив в Запросе HTTP в.NET? У меня есть решение, но я не знаю, является ли это лучший подход.

Вот мое решение:

<form action="myhandler.ashx" method="post">
    <input type="checkbox" name="user" value="Aaron" />
    <input type="checkbox" name="user" value="Bobby" />
    <input type="checkbox" name="user" value="Jimmy" />
    <input type="checkbox" name="user" value="Kelly" />
    <input type="checkbox" name="user" value="Simon" />
    <input type="checkbox" name="user" value="TJ" />

    <input type="submit" value="Submit" />
</form>

Обработчик ASHX получает "пользовательский" параметр как разграниченную запятой строку. Можно получить значения легко путем разделения строки:

public void ProcessRequest(HttpContext context)
    {
        string[] users = context.Request.Form["user"].Split(',');
    }

Так, у меня уже есть решение моей проблемы: присвойте несколько значений тому же названию параметра, предположите, что обработчик ASHX получает его как разграниченную запятой строку и разделил строку. Мой вопрос состоит в том, является ли это то, как он обычно делается в.NET.

Какова общепринятая практика для этого? Существует ли более простой способ захватить несколько значений, чем предположение, что значение разграничено запятой и вызов Разделения () на нем? Это то, как массивы обычно передаются в.NET, или XML используется вместо этого?

У кого-либо есть понимание на том, является ли это лучшим подходом?

16
задан JR. 5 May 2010 в 20:56
поделиться

2 ответа

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

Однако значения на самом деле не передаются как строка, разделенная запятыми, они передаются как отдельные значения с одним и тем же именем. Данные формы из вашего примера будут выглядеть следующим образом:

user=Aaron&user=Bobby&user=Jimmy&user=Kelly&user=Simon&user=TJ

Вы можете прочитать значения как массив напрямую следующим образом:

string[] users = context.Request.Form.GetValues("user");

Если вы используете Form["user"], он объединит значения, и вам придется разделить их снова. Это просто пустая трата времени, к тому же, если любое из значений содержит запятую, то оно ломается.

32
ответ дан 30 November 2019 в 17:04
поделиться

Если вы используете чекбоксы или список с несколькими вариантами выбора, то набор значений, разделенных запятыми - это то, что вы получаете автоматически из html. То, что вы делаете, совершенно нормально. Если вы создаете массив в javascript каким-то другим способом, вы можете создать строку, разделенную запятыми, и присвоить ее скрытому полю, а на сервере использовать split() таким же образом. XML, конечно, еще один вариант, но он кажется мне слишком сложным, если все, что вы хотите сделать, это передать простой массив чисел или коротких строк. (Конечно, если строковые значения, которые вам нужно передать, содержат запятые, это испортит ваш простой план)

.
2
ответ дан 30 November 2019 в 17:04
поделиться
Другие вопросы по тегам:

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