Чтение данных сообщений, отправленных в форму ASP.Net


109

У меня есть рабочая форма входа в приложение asp.net. Стандартные вещи с текстовым полем имени пользователя и пароля и кнопкой для обработки входа в систему. Работает отлично.

У меня есть новое требование, позволяющее пользователю вводить имя пользователя и пароль с отдельной простой HTML-страницы, которая не является частью моего приложения asp.net. Я планирую добиться этого с помощью стандартной html-формы, ввода, кнопки отправки и т. Д. Действие формы будет URL-адресом моей страницы входа asp.net, а его методом будет POST.

Что я хочу сделать на странице кода C # формы входа в систему asp.net, предположительно в событии Page_Load, - это проверить, содержит ли запрос страницы передаваемое значение имени пользователя и пароля. Если это так, то мне нужно чтобы прочитать эти значения и обработать логин, как если бы кто-то нажал кнопку входа на странице 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" - это имена элементов управления на странице публикации.


А как насчет байтовых массивов? Может быть, у вас будет такая строка, а затем преобразовать ее в массив байтов, что ли? Я загружаю файл на serve.r
Fallenreaper

2
Любопытно, зачем перебирать коллекцию namevalue, а не проверять запрос напрямую для каждого имени элемента управления?
Howiecamp

@Howiecamp когда-нибудь находил ответ на этот вопрос? Я тоже заинтригован.
tfrascaroli 08

ЭТОТ! Я отлаживал целых 5 часов, пытаясь понять, какого черта я не могу вывести данные из этой формы.
Callat

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

username - это имя ввода на странице отправки. Пароль можно получить таким же образом. Если он не пустой или не пустой, он существует, затем войдите в систему пользователя (я не помню точных шагов для членства в ASP.NET, если предположить, что вы это используете).


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

Дайте правильную ссылку на свой ответ, чтобы это было более осуществимо.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.