【问题标题】:PHP $_POST analog in ASP.NET C# [duplicate]ASP.NET C# 中的 PHP $_POST 模拟 [重复]
【发布时间】:2013-01-16 17:30:40
【问题描述】:

可能重复:
Getting a POST Variable in ASP.net

我只想打印所有发布的变量及其值。

Request.Form 只给我没有值的名称,Request.InputStream 给我“此流不支持超时。”错误。

我怎样才能获得像$_POSTPHP 中所做的所有发布值?

【问题讨论】:

  • 我相信Request.Form["name"] 是您要找的。​​span>

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

Request.FormNameValueCollection,您可以像这样访问发布的数据:

string postedName = Request.Form["name"];

【讨论】:

  • 这很糟糕。我只想查看所有发布数据,而无需修改我实际发布的变量。
  • 这很好,这就是你通过post获取值的方式,你的问题不清楚:/你的意思是什么,你想在(VS)调试器中看到它们?
  • 不,我使用 NewtonJSON 来输出它们,就像 return Content(JsonConvert.SerializeObject(Request.Form)); 我可以在调试器中看到它们,但我只想打印出来。我不相信没有办法做到这一点。
  • 看来这是序列化问题,看看这个:how to convert NameValueCollection to JSON string?
  • 很好,这解决了我的问题。非常感谢。
【解决方案2】:

如果您想查看所有表单键值对以进行调试,您可以执行以下操作:

var dict = new Dictionary<string, string>();
foreach (string key in Form.Keys)
    dict.Add(key, Form[key]);

然后在循环之后设置一个断点并检查字典。

【讨论】:

  • 另外,您可以挖掘非公共成员以找到价值,但通常麻烦大于价值。
  • 错误:“System.Web.UI.HtmlControls.HtmlForm”不包含“Keys”的定义(在 Form.Keys 中)
【解决方案3】:

只需使用Request,就像这样:

var tmp = Request["formfield"]; // gets the value of 'formfield' from the request

但是,与 PHP 不同,请记住,Request 变量将包含 GET 和 POST 参数。

【讨论】:

  • 这很糟糕。我只想查看所有发布数据,而无需修改我实际发布的变量。
  • @EricPetroelje 这不会在 C# 中编译(您使用单引号作为字符串),对吧?
  • @des - 你是对的,对不起,那是一个错字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2013-06-22
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
相关资源
最近更新 更多