2010. 7. 8. 02:25
ASP.NET
MVC 프레임웍의 큰 목표중 하나인 DRY는 여러방면에서 개발자의 수고를 덜어준다.
예를 들면 한가지 비즈니스 로직을 사용하여 여러 종류의 뷰페이지를 서비스해야할 경우도 MVC 프레임웍이 힘을 발할 수 있는 대표적인 경우이다.
http://localhost/index.aspx 와 http://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