검색결과 리스트
Programming/ASP.NET에 해당되는 글 7건
- 2010/05/18 Server.UrlEncode와 UrlDecode를 사용할때 Encoding 문제
- 2009/06/26 ViewState값을 이용하지 않고 DropDownList의 선택된 값 가져오기
- 2009/06/21 ASP.NET 상태관리하기
- 2009/05/19 웹 서비스 설명 페이지 안보이게 하기
- 2009/04/12 Visual Studio 2005에서 .NET 3.5 기능 사용하기
- 2009/01/22 Postback과 Cross-Page Posting (2)
- 2009/01/21 ASP.NET의 장점 (2)
글
설정
트랙백
댓글
글
보통 DropDownList Control의 ViewSate값을 false로 설정을 하고, 버튼컨트롤의 클릭이벤트와 같은 포스트백 이벤트나, PageLoad에서 DropDownList의 선택된 값을 가져오려고 한다면, 원하는 결과를 얻을 수가 없다. 그 이유는 페이지의 Load 이벤트에서 OnLoad 이벤트를 호출하게 되는데, OnLoad이벤트가 하는 일중의 하나는 뷰상태가 복원이 되는 것이다. OnLoad에 대한 자세한 설명은(http://msdn.microsoft.com/ko-kr/library/system.web.ui.control.onload.aspx)이곳에 가면은 자세히 알 수가 있다.
그럼 어디서 값을 가져와야 할것인가가 문제이다. 저는 여기서 이 문제를 해결하기 위해서, Init이벤트에서 선택된 값을 가져와서 변수에 저장을 하였습니다. PreInit의 경우 컨트롤을 초기화 해주기 전이므로 DropDownList컨트롤이 null 상태이다. 그럼 간단히 소스를 보면,
ddlSeries, ddlGrade, ddlType는 DropDownList의 각각의 ID값이다. UniqueID는 각 DropDownList가 html 코드로 바뀌게 되면서 id값과 name 값이 바뀌게 되는데, ClientID는 id값, UniqueID는 name값이라 생각하면은 될듯하다.
설정
트랙백
댓글
글
웹 페이지는 Stateless 상태이다. 서버가 클라이언트의 브라우져에게 응답을 하여 페이지를 보내주면 브라우져는 이에 응답하여 페이지를 보여주게 되고, 이후 페이지의 상태변화에 따른값은 저장하지 않는다. 그래서 일반적으로 PostBack일어나면 기존의 저장되어있는 상태값들은 유지가 되지 않는다.
하지만 상태값을 유지해야 할 필요성이 있는 컨트롤들이 많다. 이런것을 위해서 ASP.NET의 경우 ViewState라는 것을 지원하고, 기본적으로 클라이언트측 상태관리 옵션은 Hidden Field, Cookie, Query String가 있다.
ViewState같은 경우 ASP.NET에서 자동으로 관리를 해준다. 그래서 사용을 할때 그냥 아무런 생각없이 사용하면은 된다. 자동적으로 다 해주니까... 하지만 이건 문제가 상당히 많다.. ViewState를 사용한 소스를 보면 Hidden Field의 값을 보면 상당히 길다.. 그리고 모든 서버 컨트롤의 ViewState를 사용하는 기본 옵션인 EnableViewState값은 true이다. 그래서 내가 생각하고 있지 않지만 Hidden Field값으로 상태유지되는 컨트롤들이 상당히 있다.
이렇게 많이 사용되는 값들은 매번 PostBack마다 서버에 전송되게 되고, 이러한 상황이 되면 웹페이지가 느리게 된다. 간혹 ViewState에 대한 설명을 보면 HiddenField보다 보안이 강화되었다는 말을 들을 수가 있다. Hidden Field보다 보안이 강화된것은 사실이지만, Base64로 인코딩 되어있다는 사실은 이미 알려져 있고, 간단하게 디코딩만 하면은 ViewState값은 알 수가 있다.
그래서 나는 쓸데 없이 길기만 하고, 미미한 보안기능을 사용할 바에는 조금이나마 길이가 짧고 서버에게 전송하는 양이 적은 Hidden Field나 Query String을 사용하는게 낫지 않을까 하는게 나의 생각이다.
오랜만에 포스트지만 오래 글을 못쓰겠다.
다음 포스트에서는 프로그램도 만들어 봐야겠다.
설정
트랙백
댓글
글
아래처럼 Web.config파일을 수정하면 된다.
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
....
</system.web>
설정
트랙백
댓글
글
<system.web> 태그 안에 밑의 관련된 정보를 입력만 하면 사용이 가능하다.
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</controls>
</pages>
<httpHandlers>
<add path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
설정
트랙백
댓글
글
- Postback
사용자가 웹 페이지에서 입력한 정보나변경한 정보는 서버로 다시 전송되며, ASP.NET은 전송된 정보를 기초로 하여 ASP.NET은 전송된 정보를 기초로 하여 ASP.NET페이지를 서버에서 처리한 후 그 결과를 사용자에게 다시 되돌려 줍니다. 이렇게 자신을 타겟으로하여 현재 페이지를 다시 서버로 전송하는 프로세스를 Postback입니다.
그럼 사용자가 페이지를 처음 요청하는 것은 Postback일까요? 정답은 No! 입니다. 즉, 페이지가 처음 로드된 것은 Postback이 아닙니다. 페이지가 처음 로드된 후 Postback을 일으키는 컨트롤을 통해 현재 페이지를 다시 서버로 전송할 때가 Postback이 일어나는 시점입니다.
Postback인지 아닌지는 Page.IsPostback 을 사용하시면 됩니다. Postback 일경우 True를 아닐경우 False를 리턴합니다. - Cross-Page Posting
Cross-Page Posting이란 타겟을 다른 대상 페이지로 하여 현재 페이지를 서버로 전송하는 프로세스 입니다. 밑의 예제는 정보를 보내는 페이지(Default.aspx)와 정보를 받아서 그 정보를 보여주는 페이지(CrossPagePosting.aspx)로 구성되어 있습니다.Default.aspx 의 Body 부분
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/CrossPagePosting.aspx" />
</div>
</form>CrossPagePosting.aspx.cs파일
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
TextBox t;
t = (TextBox)PreviousPage.FindControl("TextBox1");
Response.Write("Cross-Page Posting : " + t.Text);
}
else
{
Response.Write("Cross-Page Posting fail");
}
}
설정
트랙백
댓글
글
- 뛰어난 성능
ASP.NET으로 구현된 웹 페이지는 최초 요청 시에 한번만 컴파일 작업을 하고 이 컴파일된 결과를 Assembly Cache라는 곳에 저장을해 둡니다. 그러면, 최초 요청이 일어난 후부터는 사용자로부터 웹 페이지 요청이 있더라고 컴파일 작업 없이 Assembly Cache에 있는 내용을 가지고 바로 사용자에게 응답을 해 줄 수 있다. - 강력한 개발 도구 제공
책의 내용을 보면 ASP.NET도 메모장과 같은 도구로 개발은 가능하다고 합니다. 하지만 누가 ASP.NET을 메모장으로 개발을 할까요?? 좋은 도구가 있으면 그것을 활용하는 것이 옳은 선택입니다. - 유연성
.NET 언어들은 서로간의 문법은 다르지만내부적인 규격은 모두 동일하여 C#으로 만든 기능을 VB.NET이나 J#과 같은 다른 .NET 언어에서 참조가 가능 합니다. - 개발의 단순성
기본적으로 ASP.NET에서제공하는 서버 컨트롤이 있습니다. 간단히 드래그 앤 드랍으로 컨트롤 추가가 가능합니다. - 사이트 관리의 용이성
전체 웹사이트를 관리를 하는 Machine.config 와 Web.config 만 수정을 하면 웹사이트의 모든 설정을 변경이 가능합니다. - 뛰어난 확장성
서버컨트롤의 기본 기능만을 사용하는것이 아닌 자신이 원하는 기능과 스타일을 추가하여 사용이 가능 합니다. - 철저한 보안기능
ASP.NET의 보안 매커니즘은 인증과 권한부여라는 두 부분으로 나누어져 있다고 하네요. 그런데 아직 이부분은 공부를 해보지 못하여 뭐라고 쓰지를 못하겠습니다
이상 ASP.NET의 장점들을 적어봤습니다.
RECENT COMMENT