본문 바로가기
Web/ASP.NET

[ASP.NET] ASP.NET에서 form에서 method="post" 전송 오류

by WooHey 2022. 10. 21.

asp.net 로그인 예제를 연습하던 중 login.aspx 에서

 

<form action="profile.aspx" method="post">

    <input type="text"  name="id" id="id"/>
    <input type="password" name="pw" id="pw"/>
<input type="submit" />

 

위와 같이 폼에서 id, pw를 입력받아 profile.aspx 전달하는 간단한 예제였다.

submit을 통해 전송하는 구조였으며 ID, PW를 입력받아 전송버튼을 눌러 profile.aspx.cs 로 잘 전달되는지 확인했는데 Request.Form["id"]  Request.Form["pw"] 값이 비어있는 상황이 발생했다.

 

디버깅 조사식을 통해 값을 확인해보니 profile.aspx.cs 에서 Request.Form 자체가 비어있었다.

 

어찌저찌 오류를 해결(?) 이라기 보다는 안됐던 이유를 찾았는데 그 이유를 알기 전에 우선 postback에 대해서 먼저 알아보자.

 

 

# POSTBACK : 동일한 페이지에 대한 http post. 즉, 폼의 내용을 동일한 URL에 POST하는 것(새로고침)

 

(오류 상황) 우선 확인했을 때에는 login.aspx 에서 form을 통해 id, pw를 입력한 값이 profile.aspx로 전달은 되었다.

하지만 profile.aspx.cs의 Request.Form으로 받아오지는 못하는 상황.

 

이유는 간단했다.

 

asp.net에서 form의 속성 method="post" 를 통해 값을 전달할 경우 전달이 안되고, (하지만 get을 통한 전달은 값이 제대로 전달 되더라)

이는 postback을 통해 받아온 로그인 id, pw를 login.aspx.cs의 Request.Form 에서 확인이 되었다.

 

따라서, 로그인 id, pw 정보를 profile.aspx.cs 에서 확인할 게 아니라

login.aspx의 form을 통해 받은 정보를 login.aspx.cs 에서 다시 받아와서 로그인을 해야하는 것이다.

 

아래 stackoverflow 참조.

 

stackoverflow.com/questions/8712238/when-is-request-formname-null-and-when-an-empty-string

 

When is Request.Form["name"] null and when an empty string?

Why do the following result in a true if clause even though the textbox is empty and not even touched on a postback? : <form action="Default.aspx" runat="server" method="post" id="newform"> ...

stackoverflow.com