솜이슬님의 블로그에서
처음 만나는 익스프레션 블랜드를 이용한 실버라이트2 포스트를 발견하고 링크한다.
 
이 포스트는 스캇구스리 아저씨의 글을 번역한 것인데, 매우 흥미롭다.
블랜드로 실버라이트2를 연습해 보기 아주 좋은 예제인듯 한다.
wpf 에서 사용하던 INotifyPropertyChanged 인터페이스와 ObservableCollection, Binding Direction 등의 개념을 이해하기 좋은 예인 듯 하다.

시간을 내서 따라하기라도 좀 해봐야지...
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/214

댓글을 달아 주세요

출처 : http://msdn.microsoft.com/en-us/library/ex526337.aspx

asp.net 에서는 특별한 목적으로 예약된 이름의 폴더들이 있는데 그 리스트 아래와 같다.

노트 : 아래의 폴더들은 ,App_Theme 를 제외하고, http 요청에 응답하지 않는다.
즉, 폴더안에 파일이 존재하더라도 http 요청으로 실행되지 않으며, 단지 코드상에서만 접근할 수 있다.
  • App_Browsers
  • App_Code
  • App_Data
  • App_GlobalResources
  • App_LocalResources
  • App_Themes
  • App_WebReferences
  • Bin

App_Browsers

.browser 파일을 담고 있는 곳으로 , 각 브라우저를 식별하고 각 브라우저의 기능들을  알아내는 역할을 한다.
관련 정보는  Browser Definition File Schema (browsers Element) 와 How to: Detect Browser Types in ASP.NET Web Pages 를 보기 바란다.


App_Code

.cs 파일 같은 코드 파일이 위치하는데, 이 곳에 존재한는 파일은 수정 후 따로 컴파일을 하지 않아도
수정후 첫번째 Request 가 들어올 때 재 컴파일 된다. (참 특이한 폴더다)
내부적으로 서브 폴더도 갖을 수 있으며 그 안에 파일도 런타임시 수정된 부분이 있으면 컴파일 된다.
더 알고 싶으면, Shared Code Folders in ASP.NET Web Sites 와 codeSubDirectories Element for compilation (ASP.NET Settings Schema) 를 참고하면 된다.

App_Data

MDF 나 XML 파일같은 데이타 소스 파일을 포함할 수 있다.
어플리케이션 내부의 멤버십이나 롤 정보를 관리하는 데이타 저장소로 사용할 수 있다.
역시 자세한 것은  Introduction to Membership 와 Understanding Role Management 를 참고.


App_GlobalResources

.resx 나 .resources 파일이 위치할 수 있다.
전역 scope 의 어셈플리로 컴파일 되어 어디서나 접근할 수 있다.
ASP.NET Web Page Resources Overview 참고


App_LocalResources

.resx 나 .resources 파일이 위치할 수 있다.
특정 페이지나 유저컨트롤, 마스터페이지에서 만 사용되는 리소스파일들.
위에 링크 참고

App_Themes

스킨과 관련된 것으로 아는데..이 방식을 별로 선호하지 않아서 패스
ASP.NET Themes and Skins Overview 참고


App_WebReferences

 wsdl, .xsd, .disco,.discomap 파일등 웹에서 참조용으로 쓰이는 파일들의 집합소.
 큰 관련은 없어보이지만 ,  Web Services Description Language Tool (Wsdl.exe)

Bin

컴파일 된 dll 어셈블리가 모이는 곳. 이곳에 dll 이 존재하면 자동 참조된다.
http://msdn.microsoft.com/en-us/library/t990ks23.aspx 참고


기타 참고용 링크
Administering ASP.NET Web Sites.
Managing Authorization Using Roles.


쓸만한 정보인가 싶어 쭉 봤더니...뭐 큰 도움은 안된다..ㅎㅎ

이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/213

댓글을 달아 주세요

출처 : http://mattberseth.com/blog/2007/05/ajaxnet_example_using_an_updat.html
데모보기 : http://mattberseth2.com/progress_indicator/

참고 : ajax.net Animation Reference


검색버튼을 누르면 리스트가 희미해지고 정 중앙에 로딩중을 표시하는 gif 애니메이션 이미지가 올라온다.
검색결과가 리턴되고 업데이트 판넬이 새로 랜더링되면 리스트는 원래의 투명도로 돌아오고 로딩이미지는 사라진다.

이것을 구성하기위해 updatepanel,grid-view,updatepanelAnimationExtender(upax) 를 사용한다.

1. updatepanel 의 트리거 이벤트 발생
2. upax 의 OnUpdating 처리
    - <parallel> 은 각 애니메이션이 각각의 타이머를 갖고 독립적으로 수행된다는 것임(동시실행)
    - duration=0 은 애니메이션 처리가 즉각 발생한다는 것임,시간을 지정하면 그 시간동안 천천히 애미메이션됨.
    - 즉 , onUpdating 이란 스크립트의 호출 , btnSearch 버튼의 비활성화, updatePanel1 의 투명도를 50% 로 하는 애니메이션을 동시에 수행함.
    - onUpdating 스크립트는 중앙에 로딩 이미지를 위치시키는 역할을 함.

3. btnSearch 의 클릭 이벤트 처리로 그리드뷰가 새로 바인딩
4. updatePanel1 의 refresh(update)
5. upax 의 OnUpdated 처리
   - 투명도 Fade-In
   - btnSearch 활성화
   - onUpdated 스크립트 call - 로딩중 이미지 감추기

여기서..

function onUpdating(){
        // get the update progress div
        var updateProgressDiv = $get('updateProgressDiv');
        // make it visible
        updateProgressDiv.style.display = '';

        //  get the gridview element       
        var gridView = $get('<%= this.gvCustomers.ClientID %>');
       
        // get the bounds of both the gridview and the progress div
        var gridViewBounds = Sys.UI.DomElement.getBounds(gridView);
        var updateProgressDivBounds = Sys.UI.DomElement.getBounds(updateProgressDiv);
       
        //    do the math to figure out where to position the element (the center of the gridview)
        var x = gridViewBounds.x + Math.round(gridViewBounds.width / 2) - Math.round(updateProgressDivBounds.width / 2);
        var y = gridViewBounds.y + Math.round(gridViewBounds.height / 2) - Math.round(updateProgressDivBounds.height / 2);
       
        //    set the progress element to this position
        Sys.UI.DomElement.setLocation (updateProgressDiv, x, y);       
    }



AJAX.Net 도 스크립트로 직접 핸들링할 수 있는 방법을 제공하고 있음을 알 수 있다.
하지만 YUI 보다는 왠지 답답함을 느낀다.


이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/204

댓글을 달아 주세요

  1. BlogIcon 이쁜이 2008/05/11 21:55 Address Modify/Delete Reply

    아이낳기 전엔 정말이지 저도 한몸매 했어요.
    믿어주세요~~
    산후에 수유하는 동안 정말 너무 맘놓고 먹었던게 잘못이었나봐요.
    수유기간이 끝나고도 1년이 한참 지났는데도 살이 빠지지가 않았어요~~
    붓기도 안빠져서 그대로 살로 남은거 같았어요.
    창피해서 밖에도 못나가고 살았는데, 친구로부터 전해받은 쉐이크를
    한달동안 사용하고 희망을 찾았답니다.
    산후에 불어난 23kg의 살들이 한달만에 12kg이 줄어들었거든요.
    그렇게 석달후에는 아이낳기전보다 더 괜찮은 몸매로 돌아왔구요.
    얼굴에 내려앉은 다크써클도 없어지고 변비, 위염, 손발저림까지
    좋아졌답니다.
    믿어지시나요? 저의 이런 노하우 궁금하지 않으세요?
    네이버에 허브밥 치세요. www.herbbab.com 이랍니다.

  2. BlogIcon SONATINE 2008/05/12 11:28 Address Modify/Delete Reply

    형~ 저도 씨폴더 회원가입했습니다. 오우...천국이 따로 없네요..씨폴더~ㅋㅋㅋㅋ

  3. BlogIcon SONATINE 2008/05/12 11:29 Address Modify/Delete Reply

    위에 이쁜이씨는 아는분이세요?? 가보니까 허벌난 인생사이트 나오네....

출처 : http://mattberseth.com/blog/2007/06/quick_ajax_tip_provide_a_bette.html

데모보기 : http://mattberseth2.com/ajaxified_wizard/

앞에 포스팅한 http://mattberseth.com/blog/2007/05/ajaxnet_example_using_an_updat.html 의 응용되겠다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/203

댓글을 달아 주세요

출처 :http://www.codeproject.com/KB/ajax/DelayedContentLoading.aspx

updatepanel,timer,multi-view,rss-toolkit 를 사용한 좋은 예제인 것 같다.

멀티뷰와 업데이트 판낼을 사용해 비동기 요청의 상태를 변화시키는 것은 좋은 생각인듯

이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/202

댓글을 달아 주세요

출처 :http://blog.markerstudio.com/archives/450


updatepanel 의 트리거로 지정된 컨트롤(링크버튼 같은...)의 포스백 스크립트를 호출해서
강제로 업데이트판넬을 refresh 할 수 있다.

보통 트리거인 컨트롤의 이벤트 발생시 __doPostBack('컨트롤아이디') 함수가 호출되는 것을 볼 수 있다.
즉 이 포스트백 스크립트를 호출해서 트리거 컨트롤의 포스백을 유도하고 이에 연결된 업데이트판넬의 업데이트를 유도하는 것이다.

정리하면,

1. 버튼을 하나 둔다.css 로 보이지 않게 숨긴다.
2. 버튼을 업데이트판넬의 트리거로 지정한다.
3. 필요한 스크립트에서 __doPostBack(버튼아이디) 호출한다.

이렇게 한다는 것이다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/201

댓글을 달아 주세요

출처 : http://dotnetslackers.com/articles/aspnet/JavaScript_with_ASP_NET_2_0_Pages_Part1.aspx

asp.net2.0 에서는 클라언트사이드에서 필요한 자바스크립관련 유용한 기능들이 몇가지 추가되었다.
그래서 Page.RegisterStartupScript 를 써야 했던 노가다를 좀 줄여준다.

1. 특정컨트롤에 포커스 주기

Page.SetFocus(control);

로 페이지 객체의 매소드를 호출하거나

Textbox1.Focus();

위와 같이 웹컨트롤 내부의 함수를 호출해도 된다.

또한 form 에 DefaultFocus 라는 속성이 추가 되어서 폼이 로드시 기본 포커스를 지정할 수 있다.
아래 코드처럼 하면 textbox2 에 포커스가 간다.
<form defaultfocus="textbox2" runat="server">
  <asp:textbox id="textbox1" runat="server"/>
  <asp:textbox id="textbox2" runat="server"/>
</form>


2. 메세지박스 띄우기

'삭제 하시겠습니까?' 라는 comfirm 메세지를 띄우고 '예'를 클릭하는 경우만 포스트 백이 일어나게 하는 경우 전에는 주로 Attribute 에 onclick 이벤트를 넣어 처리했지만, 버튼 컨트롤에 있는 onClientClick 을 이용해서 처리할 수 있다는 내용


3. 포스트 백 후에도 같은 스크롤위치 고정시키기

지랄스럽게도 포스트백이 되버리면 페이지가 리로드 되는 것처럼 스크롤 포지션을 잃어버린다.
asp.net2.0 에서는 무지하게 쉽게 스크롤 위치를 유지해준다.

<%@ Page ... MaintainScrollPositionOnPostback="true" %>


4. 동적으로 스크립트 페이지에 추가하기

특정이벤트가 발생햇을 경우 실행할 스크립트를 추가하는 경우이다.
이런 경우 ClientScript.RegisterClientScriptBlock 을 사용한다.

<script runat="server">
  protected void btnPopUp_Click(object sender, EventArgs e)
  {
    //Build a Pop Up JavaScript
    //please note the peculiar '/script' in the last line of the script string
    //This is to work around the problem that compiler would mistake the 
    //closing script tag as the outer script closing tag.
    //For details, please see
    //http://support.microsoft.com/default.aspx?scid=kb;EN-US;827420

    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append("<script language='javascript'>");
    sb.Append("window.open('javascript.htm', 'CustomPopUp',");
    sb.Append("'width=200, height=200, menubar=yes, resizable=no');<");
    sb.Append("/script>");

    //register with ClientScript
    //The RegisterStartupScript method is also slightly different
    //from ASP.NET 1.x
    Type t = this.GetType();
    if (!ClientScript.IsClientScriptBlockRegistered(t, "PopupScript"))
      ClientScript.RegisterClientScriptBlock(t,"PopupScript", sb.ToString());
  }
</script>

<form id="form2" runat="server">
  <asp:Button ID="btnPopUp" runat="server" 
    Text="PopUp" OnClick="btnPopUp_Click" />
</form>

5. 페이지 초기 로드시 실행할 스크립트의 추가

ClientScript.RegisterStartupScript 를 사용하면 된다.


6. Embedding JavaScript in Resources

이부분은 별 필요성을 못느껴서 생략....
참고링크 :http://aspnet.4guysfromrolla.com/articles/080906-1.aspx
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback Address :: http://steelleg.tistory.com/trackback/194

댓글을 달아 주세요

출처 : http://dotnetslackers.com/articles/aspnet/UnderstandingASPNETValidationLibrary.aspx

스크립트로 하나의 특정한 validator 를 동작시키는 것을 찾다가 발견한 글이다.

asp.net 클