C# - 如何列出发布到 ASPX 页面的变量名称和值
Posted
技术标签:
【中文标题】C# - 如何列出发布到 ASPX 页面的变量名称和值【英文标题】:C# - How to list out variable names and values posted to ASPX page 【发布时间】:2010-12-02 11:58:26 【问题描述】:我正在动态生成要提交到 .aspx 网页的 html 表单。如何在结果页面中确定提交了哪些变量名以及值是什么?使用: 请求["VarName"].toChar(); 有效,但假设我知道所有变量名。如何获取名称和值?
理想情况下,该解决方案适用于 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] );
【讨论】:
这在我将 Request.Form.keys 更改为 Request.Form.Keys 后起作用,对于 Request.QueryString.Keys 也类似。谢谢! 对不起。我已经开始依赖智能感知来解决我的案例问题。 =) 已在答案中修复。【参考方案2】:Request.Cookies
、Request.Form
、Request.QueryString
和 Request.ServerVariables
中的每一个都是 NameValueCollection
或类似的。您可以向其中的每一个询问其密钥,然后从那里继续。
foreach (string key in Request.QueryString.Keys)
string value = Request.QueryString[key];
// etc
您需要哪些集合取决于此目的 - 如果只是用于诊断,我很想将它们全部丢弃。
【讨论】:
你的意思是“Request.QueryString[key]”吧?【参考方案3】: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 变量共享键“Name”并具有值“Val1”和“Val2”,则Request.Params["Name"]
的值将是“Val1,Val2”。
【讨论】:
【参考方案4】:不要从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();
【讨论】:
但 Request.Form 包含 POST 标题,如 X-Requested-With 和 __RequestVerificationToken 我的意思是包含 HTTP* 标题。 @DeveloperWebs:不,Request.Form
集合仅包含在请求正文中发送的表单数据,而不包含 HTTP 标头。【参考方案5】:
您应该使用Request.Form 作为集合。请注意,多值参数(多选)本身会变成一个集合。 this page 上有一个例子。
【讨论】:
【参考方案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" %>
您将能够看到表单数据、会话、应用程序数据等。
【讨论】:
以上是关于C# - 如何列出发布到 ASPX 页面的变量名称和值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 c# 将命令行输出重定向到 ASPX 页面? [复制]
如何将 NicEdit 富文本编辑器与 asp.net C# (.aspx) 页面集成