从 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 中的密码重置令牌中检索用户?