Как пройти через Request.Form, не зная никаких деталей?

Я хочу выложить все в Request.Form, чтобы я мог просто вернуть его в виде строки и посмотреть, с чем я имею дело. Я попытался настроить цикл for...

// Order/Process
// this action is the submit POST from the pricing options selection page
// it consumes the pricing options, creates a new order in the database,
// and passes the user off to the Edit view for payment information collection

[AcceptVerbs(HttpVerbs.Post)]
public string Process()
{
    string posted = "";
    for(int n = 0;n < Request.Form.Count;n++)
        posted += Request.Form[n].ToString();
    return posted;
}

Но все, что я когда-либо получаю, это "12", и я знаю, что в форме гораздо больше вещей, чем это...

4 ответа

Решение
StringBuilder s = new StringBuilder();
foreach (string key in Request.Form.Keys)
{
    s.AppendLine(key + ": " + Request.Form[key]);
}
string formData = s.ToString();
foreach(string key in Request.Form.Keys)
{
  posted += Request.Form[key].ToString();
}

Оооо Я понял мою проблему, в моей форме единственное значение, которое я продолжаю возвращать, это от единственного элемента управления вводом, который имеет ИМЯ. Теперь, когда я даю им имена, это работает.

foreach(KeyValuePair<string, string> kvp in Request.Form){
   posted += kvp.Key + ":" + kvp.Value + "\n";
}

Редактировать: Ох. Видимо, вам нужно взломать NameValueCollection, чтобы заставить его сделать это. Так что это плохой способ перебора коллекции.

Другие вопросы по тегам