블로그 이미지
Sunny's

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

2010. 7. 8. 02:25 ASP.NET

MVC 프레임웍의 큰 목표중 하나인 DRY는 여러방면에서 개발자의 수고를 덜어준다.

예를 들면 한가지 비즈니스 로직을 사용하여 여러 종류의 뷰페이지를 서비스해야할 경우도 MVC 프레임웍이 힘을 발할 수 있는 대표적인 경우이다.

http://localhost/index.aspxhttp://localhost/index.iphone.aspx 라는 두가지 뷰페이지가 각각 데스크탑용 브라우저와 아이폰용 브라우저를 서비스한다고 가정할 때 동일한 컨트롤러를 사용하도록 가능하다.

우선 데스크탑용 뷰페이지와 아이폰용 뷰페이지를 아래와 같이 만들었다고 가정하자

사용자 삽입 이미지


사용자 삽입 이미지

일반데스크탑용 뷰페이지 Index.aspx


사용자 삽입 이미지

아이폰용 뷰페이지 Index.IPhone.aspx



아이폰의 사파리 브라우저에서도 물론 데스크탑용 뷰페이지를 볼 수 는 있겠지만 해상도와 사이즈의 문제로 분명 차별화된 디자인이 필요할 것이다.

그럼 이번엔 아이폰에서 Index.aspx 페이지를 접속한 경우 Index.Iphone.aspx로 이동할 수 있도록 아래와 같이 액션필터를 확장한 클래스를 만들자

사용자 삽입 이미지

IPhoneFilter라는 이름의 위 액션필터는 브라우저를 감지하여 뷰이름에 "IPhone"라는 접미사를 붙이게끔한다.
주의할 것은 OnResultExecuted 메소드가 아닌 OnActionExecuted 메소드에 위의 로직을 삽입해야한다는 것인데 그 이유는 OnResultExecuted 메소드는 이미 해당뷰로 결과를 전송한 후이기 때문에 뷰이름을 변경하더라도 그 뷰페이지로 이동하지 않기 때문이다.

이제는 위의 필터를 컨트롤러에 적용하기만 하면된다

사용자 삽입 이미지

이제 아이폰에서 Index 나 About 액션 메소드를 호출하게 되면 각각 index.Iphone.aspx와 About.Iphone.aspx 페이지를 호출하게 된다.

사용자 삽입 이미지

크롬에서 접속했을때 뷰페이지

사용자 삽입 이미지

인터넷익스플로어에서 접속했을때 뷰페이지 모습

사용자 삽입 이미지

아이폰에서 접속했을때의 뷰페이지 모습




ASP.NET MVC프레임웍,,,
쓰면쓸수록 괜찬타~~ 라는 생각이 든다

출처 : http://funnygangstar.tistory.com/tag/ASP.NET%20MVC
posted by Sunny's
prev 1 next