从 ASP.NET 中的 POST 方法中检索数据

Posted

技术标签:

【中文标题】从 ASP.NET 中的 POST 方法中检索数据【英文标题】:Retrieving data from a POST method in ASP.NET 【发布时间】:2011-11-26 15:44:00 【问题描述】:

我正在使用 ASP.NET。

有一个系统需要将数据发布到我的网站,而他们所要求的只是让我为他们提供一个 URL。 所以我给了他们我的网址http://www.example.com/Test.aspx。

现在我不知道他们是如何发布它的,但现在在我的 Test.aspx 页面上,我需要编写代码来将该数据保存到数据库中。

但是这将如何工作以及我必须在我的 Test.aspx 页面上做什么?

我在我的页面加载事件中编写了一些代码,该代码在页面加载时向我发送了一封电子邮件,以查看他们是否真的点击了页面,并且看起来它们似乎不均匀?

【问题讨论】:

【参考方案1】:

请求中的数据(内容、输入、文件、查询字符串值)都在这个对象上HttpContext.Current.Request 阅读发布的内容

StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream);
string requestFromPost = reader.ReadToEnd();

浏览所有输入

foreach (string key in HttpContext.Current.Request.Form.AllKeys)

   string value = HttpContext.Current.Request.Form[key];

【讨论】:

很好,我们可以将它与实体框架中的实体(表)映射吗?? 也许尝试 MVC 或 Web Api 来完成这项工作? :D 我正在使用 Web API 但不知道如何映射实体?【参考方案2】:

您可以使用与此类似的代码 (C#) 获取发布到页面的表单值 -

string formValue;
if (!string.IsNullOrEmpty(Request.Form["txtFormValue"]))

  formValue= Request.Form["txtFormValue"];

或者这个(VB)

Dim formValue As String
If Not String.IsNullOrEmpty(Request.Form("txtFormValue")) Then
    formValue = Request.Form("txtFormValue")
End If

一旦获得所需的值,您就可以构造 SQL 语句并将数据写入数据库。

【讨论】:

那么 txtFormValue 将成为传递给我的 URL 的参数之一? 是的,它会 - 您需要根据发布给您的内容调整您在 Request.Form 集合中检查的值的名称。 但我必须将此代码放在我的 PAGE LOAD 事件中吗?当对那个 URL 的 POST 发生时,它甚至会加载页面吗? PAGE LOAD 是放置代码的好地方,因为当数据发布到页面时应该触发该事件。您可以使用诸如 Fiddler 之类的工具来测试您页面上的帖子。 @Etienne,页面生命周期的所有步骤(其中Load 是一个)无论 GET 还是 POST 都会被调用。在 POST 上还会调用一些其他的。强烈建议您阅读 ASP.NET Page Life Cycle Overview 以了解 ASP.NET 的工作原理,然后再进一步了解。【参考方案3】:

您需要在Test.aspx.cs 文件的Page_Load 方法中检查(在/Quick Watch 上放置断点)Request 对象。

【讨论】:

以上是关于从 ASP.NET 中的 POST 方法中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

如何检索 HTML POST 数据以在 ASP.NET WebForms 中进行操作?

从 ASP.NET 中的 SQL 数据库中检索 HTML 代码

如何使用 C# 从 ASP.NET 中的 SQL Server 数据库中检索和显示 GridView 中的值

如何从 ASP.NET Core 中的密码重置令牌中检索用户?

从返回多个实际表的复杂存储过程中检索 asp.net MVC 中的数据

从 ASP.NET 中的代码隐藏提交 POST 请求 [重复]