С# - как перечислять имена переменных и значения, отправленные на страницу 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" %>

Вы сможете увидеть данные форм, сеанс, данные приложения и т.д.