读取提交到ASP.Net表单的帖子数据


109

我在asp.net应用程序中有一个有效的登录表单。标准内容,带有用户名和密码文本框以及用于处理登录的按钮。工作良好。

我有一个新要求,即允许用户从一个单独的纯HTML页面(不属于asp.net应用程序的一部分)输入用户名和密码。我计划使用标准的html(表单,输入,提交按钮等)来实现这一目标。表单操作将是我的asp.net登录页面的URL,其方法将是POST。

我想在asp.net登录表单的页面后面的C#代码中(大概在Page_Load事件中)做的是检查该页面的请求是否包含要传递的用户名和密码值。如果是,则我需要读取这些值并处理登录,就像有人单击了asp.net页面上的登录按钮一样。如果没有,那么我将照常显示登录表单。

如何检查我的页面请求中是否存在用户名和密码,并读取它们。

Answers:


151

阅读Request.Form NameValueCollection并相应地处理您的逻辑:

NameValueCollection nvc = Request.Form;
string userName, password;
if (!string.IsNullOrEmpty(nvc["txtUserName"]))
{
  userName = nvc["txtUserName"];
}

if (!string.IsNullOrEmpty(nvc["txtPassword"]))
{
  password = nvc["txtPassword"];
}

//Process login
CheckLogin(userName, password);

...其中“ txtUserName”和“ txtPassword”是发布页面上控件的名称


字节数组呢?您是否会有类似的字符串,然后将其转换为字节数组,还是什么?我正在将文件上传到serve.r
Fallenreaper 2012年

2
好奇为什么要遍历namevaluecollection而不是直接检查每个控件名称的请求?
Howiecamp 2014年

@Howiecamp是否找到了该问题的答案?我也很感兴趣。
tfrascaroli

这个!我花了整整5个小时进行调试,试图弄清楚为什么我无法从此表单中获取数据。
卡拉特

13
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... }

username是提交页面上输入的名称。可以通过相同的方式获得密码。如果它不为null或为空,则存在,然后登录用户(假设您正在使用ASP.NET Membership,我不记得确切的步骤了)。


3
NameValueCollection nvclc = Request.Form;
string   uName= nvclc ["txtUserName"];
string   pswod= nvclc ["txtPassword"];
//try login
CheckLogin(uName, pswod);

给您的答案一个适当的参考,以便更可行。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.