С# - как перечислять имена переменных и значения, отправленные на страницу ASPX
Я динамически генерирую HTML-форму, которая отправляется на веб-страницу .aspx. Как определить на полученной странице, какие имена переменных были представлены и какие значения были? С помощью: Запрос [ "VarName" ] тохар().
Работает, но предполагает, что я знаю все имена переменных. Как я могу получить имена и значения?
В идеале решение будет работать как для отправки POST, так и для GET...
Спасибо!
Ответы
Ответ 1
Вы пробовали что-то вроде этого:
Для запроса по почте:
foreach(string key in Request.Form.Keys )
{
Response.Write ( Request.Form[key] );
}
Для запроса получения:
foreach(string key in Request.QueryString.Keys )
{
Response.Write ( Request.QueryString[key] );
}
Ответ 2
Каждый из Request.Cookies
, Request.Form
, Request.QueryString
и Request. ServerVariables
является NameValueCollection
или аналогичным. Вы можете запросить у каждого из них ключи и перейти оттуда.
foreach (string key in Request.QueryString.Keys)
{
string value = Request.QueryString[key];
// etc
}
Достаточно того, какие коллекции вам понадобятся, будет зависеть от цели этого - если бы это было просто для диагностики, у меня возникло бы желание сбросить их все.
Ответ 3
Метод JohnFx работает хорошо. Вы также можете включить строку запроса, переменную сервера и данные cookie в микс, используя коллекцию Request.Params, например:
foreach(string key in Request.Params.Keys)
{
Response.Write(String.Format("{0}: {1}<br />", key, Request.Params[key]));
}
Вам нужно быть осторожным при использовании коллекции Request.Params
. Если переменная QUERYSTRING и переменная FORM совместно используют ключ "Имя" и имеют значения "Val1" и "Val2", тогда значение Request.Params["Name"]
будет "Val1, Val2".
Ответ 4
Не читайте из коллекции Request
, которая представляет собой составную коллекцию, содержащую значения формы и querystring, а также файлы cookie и переменные сервера. Читайте из конкретных коллекций, где вы хотите получить данные, т.е. Request.Form
(для POST) и Request.QueryString
(для GET).
Вот как вы можете получить все ключи и значения в строке:
StringBuilder builder = new StringBuilder();
builder.AppendLine("Form values:");
foreach (string key in Request.Form.Keys) {
builder.Append(" ").Append(key).Append(" = ").AppendLine(Request.Form[key]);
}
builder.AppendLine("QueryString values:");
foreach (string keu in Request.QueryString.Keys) {
builder.Append(" ").Append(key).Append(" = ").AppendLine(Request.QueryString[key]);
}
string values = builder.ToString();
Ответ 5
Вы должны использовать Request.Form как коллекцию. Обратите внимание, что многозначные параметры (multi-select) превращаются в коллекцию. Здесь приведен пример этой страницы.
Ответ 6
В объявлении .ASPX добавьте Trace = 'True'
<%@ Page Language="VB" Trace="True" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
Ответ 7
В дополнение к приведенным выше ответам, если вы хотите объединить коллекции элементов QueryString, Form, ServerVariables и Cookies, лучший способ - использовать HttpRequest.Params
Ответ 8
В объявлении .ASPX добавьте Trace = 'True'
<%@ Page Language="CS" Trace="True" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" %>
Вы сможете увидеть данные форм, сеанс, данные приложения и т.д.