Baca Posting Data yang dikirimkan ke Formulir ASP.Net

109

Saya memiliki formulir login yang berfungsi di aplikasi asp.net. Hal-hal standar dengan kotak teks nama pengguna dan kata sandi dan tombol untuk memproses login. Bekerja dengan baik.

Saya memiliki persyaratan baru untuk mengizinkan pengguna memasukkan nama pengguna dan kata sandi dari halaman html biasa terpisah yang bukan merupakan bagian dari aplikasi asp.net saya. Saya berencana untuk mencapai ini dengan menggunakan format html standar, input, tombol kirim, dll. Tindakan formulir akan menjadi URL halaman login asp.net saya dan metodenya adalah POST.

Apa yang ingin saya lakukan di kode C # di belakang halaman formulir login asp.net, mungkin di acara Page_Load, adalah untuk memeriksa apakah permintaan untuk halaman tersebut berisi nama pengguna dan nilai sandi yang sedang diteruskan. Jika ya maka saya perlu untuk membaca nilai-nilai tersebut dan memproses login seolah-olah seseorang telah mengklik tombol login di halaman asp.net. Jika tidak maka saya akan menampilkan form login seperti biasa.

Bagaimana cara memeriksa keberadaan, dan membaca, nilai nama pengguna dan kata sandi dalam permintaan untuk halaman saya.

daveywc.dll
sumber

Jawaban:

151

Baca Request.Form NameValueCollection dan proses logika Anda sesuai:

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);

... di mana "txtUserName" dan "txtPassword" adalah Nama kontrol pada halaman posting.

Cerebrus
sumber
Bagaimana dengan array byte? Apakah Anda memiliki string seperti itu dan kemudian mengubahnya menjadi array byte, atau apa? Saya mengunggah file ke serve.r
Fallenreaper
2
Penasaran mengapa mengulangi namevaluecollection daripada memeriksa permintaan secara langsung untuk setiap nama kontrol?
Howiecamp
@Howiecamp pernah menemukan jawaban untuk pertanyaan itu? Saya juga tertarik.
tfrascaroli
INI! Saya sedang debugging selama 5 jam penuh mencoba mencari tahu mengapa sih saya tidak bisa mendapatkan data dari formulir ini.
Callat
13
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... }

username adalah nama input pada halaman pengiriman. Kata sandi dapat diperoleh dengan cara yang sama. Jika tidak null atau kosong, itu ada, lalu login pengguna (saya tidak ingat langkah-langkah yang tepat untuk ASP.NET Membership, dengan asumsi itulah yang Anda gunakan).

John Sheehan
sumber
3
NameValueCollection nvclc = Request.Form;
string   uName= nvclc ["txtUserName"];
string   pswod= nvclc ["txtPassword"];
//try login
CheckLogin(uName, pswod);
gdmanandamohon
sumber
Berikan referensi jawaban Anda yang tepat agar lebih layak.