2009-09-29 47 views
14

我是動態生成提交到.aspx網頁的HTML表單。如何在結果頁面中確定提交的變量名稱和值是什麼?使用: 請求[「VarName」]。toChar(); 工程,但假設我知道所有的變量名稱。我如何獲得名稱和值?C# - 如何列出發佈到ASPX的變量名稱和值

理想的情況下,該解決方案將工作POST和GET提交...

謝謝!

回答

29

您是否嘗試過這樣的事情:

對於POST請求:

foreach(string key in Request.Form.Keys) 
{ 
    Response.Write (Request.Form[key]); 
} 

對於GET請求:

每個
foreach(string key in Request.QueryString.Keys) 
{ 
    Response.Write (Request.QueryString[key]); 
} 
+0

這工作後,我改變Request.Form.keys到Request.Form.Keys,和Request.QueryString.Keys類似。謝謝! – NYARROW 2009-09-30 15:38:13

+0

對不起。我已經開始依靠智能感知解決我的案例問題了。 =) 已修復答案。 – JohnFx 2009-09-30 15:55:02

6

Request.CookiesRequest.FormRequest.QueryString和請求。 ServerVariablesNameValueCollection或類似的。你可以詢問每個人的密鑰,然後從那裏繼續。

foreach (string key in Request.QueryString.Keys) 
{ 
    string value = Request.QueryString[key]; 
    // etc 
} 

相當哪些集合,你需要將取決於這樣做的目的 - 如果它只是用於診斷,我會忍不住拋售他們全力以赴。

+1

你的意思是「Request.QueryString [key]」,也許? – JohnFx 2009-09-29 23:29:05

+0

謝謝,修正:) – 2009-09-29 23:30:29

1

不要從Request集合讀取數據,這是一個包含表單和查詢字符串值的複合集合,還包含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(); 
4

JohnFx的方法效果很好。您也可以通過使用Request.Params集合,如在包括查詢字符串,服務器變量,而進入混合cookie數據:

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」。

0

您應該使用Request.Form作爲集合。請注意,多值參數(多選)自己變成一個集合。在this page上有一個例子。

0

在.aspx的聲明中添加跟蹤=「真」

<%@ Page Language="VB" Trace="True" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 
0

除了上述的答案,如果你想查詢字符串,表單,ServerVariables和餅乾的物品,收集相結合,則最好的辦法就是用HttpRequest.Params

0

在聲明中。ASPX添加跟蹤=「真」

<%@ Page Language="CS" Trace="True" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

您將可以看到表格數據,會話,應用程序數據等