ASP.Netフォームに送信された投稿データを読み取る


109

asp.netアプリケーションで動作するログインフォームがあります。ユーザー名とパスワードのテキストボックス、およびログインを処理するためのボタンを備えた標準的なもの。正常に動作します。

ユーザーが、asp.netアプリケーションの一部ではない別のプレーンHTMLページからユーザー名とパスワードを入力できるようにする新しい要件があります。フォーム、入力、送信ボタンなど、標準のhtmlを使用してこれを達成する予定です。フォームアクションはasp.netログインページのURLであり、そのメソッドはPOSTです。

おそらくPage_Loadイベントで、asp.netログインフォームのC#コードビハインドページで実行したいのは、ページのリクエストに、渡されたユーザー名とパスワードの値が含まれているかどうかを確認することです。これらの値を読み取って、誰かがasp.netページのログインボタンをクリックしたかのようにログインを処理します。そうでない場合は、通常どおりログインフォームを表示します。

ページのリクエストでユーザー名とパスワードの値の存在を確認し、読み取る方法を教えてください。

回答:


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」は、投稿ページのコントロールの名前です。


バイト配列はどうですか?そのような文字列があり、それをバイト配列に変換しますか?Imはserve.rにファイルをアップロードします
Fallenreaper

2
なぜ各コントロール名のリクエストを直接チェックするのではなく、namevaluecollectionを反復するのか不思議に思いますか?
Howiecamp 2014

@Howiecampはその質問に対する答えを見つけましたか?私も興味をそそられます。
tfrascaroli

この!私はこのフォームからデータを取得できない理由を理解しようと、5時間しっかりとデバッグしていました。
Callat、2017年

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

usernameは、送信ページでの入力の名前です。パスワードは同じ方法で取得できます。nullでも空でもない場合は、ユーザーにログインします(ASP.NETメンバーシップの正確な手順は覚えていません。それがあなたが使用していると仮定します)。


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

より適切になるように、回答について適切なリファレンスを提供してください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.