본문 바로가기

.NET/ASP.NET

ASP.NET 4.5: Filtering using Model Binding in ASP.NET Web Forms

http://www.dotnetcurry.com/ShowArticle.aspx?ID=774

위의 글을 퍼왔습니다.


참고 :이 문서는 비주얼 스튜디오 2011 Preview 및 ASP.NET 4.5을 사용하여 작성됩니다.

ASP.NET4.5에서 'System.Web.ModelBinding' 네임스페이스가 제공됩니다. 이 네임스페이스에는 ControlAttribute, QueryStringAtrribute 등등의 클래스들이 포함되어있습니다. 이 네임스페이스 안에 있는  클래스들은 'ValueProviderSourceAttribute'로부터 상속됩니다. 이 베이스클래스는 모델 바인딩에 필요한 value들의 source를 지정하기 위한 메서드 파라미터들을 정의하는데 이용됩니다.

그럼 시작해 보죠. 먼저 전에 다룬 기사(
 ASP.NET 4.5 - New Model Binding Feature Keeps the Web Form and Model Separate )를 읽어보시기 바랍니다. 


1 단계 : Visual Studio2011 Developer Preview를 열고 ASP.NET Web Application을 4.5버전으로 만듭니다. 그리고 이름을 'ASPNET45_ModelBinding'으로 합니다. 이 프로젝트에 'Model', 'Employee' 두개의 폴더를 생성합니다.
2 단계 : 'Model' 폴더에 ADO.NET Entity Framework를 추가하고 이름을 'CompanyEDMX.edmx'로 합니다. 이 EMD는 SQL Server 2008과 Comapny Database를 사용합니다.
Company Database의 테이블 스키마는 아래와 같습니다.
Department - DeptNo (int) Primary Key, Dname (varchar(50)),Location (varchar(50)). 
Employee - EmpNo (int) Primary Key, EmpName (varchar(50)),Salary (int), DeptNo(int) Foreign Key. 
Department Employee Table  

단계 3 : Employee 폴더에 master page와 함께 새로운 Web form페이지를 추가하고 이름을 'Employees.aspx'라고 합니다. Employee.aspx를 Source view에서 열고 DropDownList와 GridView를 추가합니다. 두 컨트롤들에 프로퍼티에 아래와 같이 설정합니다.

DLL GridView Properties
이페이지에 markup은 아래와 같이 보일것입니다.

ASP.NET 4.5 Web Form
4 단계 :
: Employees.aspx.cs을 다음 코드를 추가합니다.

Employee class

위의 코드에서 중요한 부분은 'GetEmployees()'메서드 입니다. 이 메서드는 nullable파라미터(DepNo)를 받아들입니다.  이메서드는 [Control]특성을 사용하여 정의되어있습니다. 이 attribute 클래스는 source의 값을 가지고 있는 control의 ID를 생성자 함수에서 받는것을 정의합니다. 위의 경우 source control은 'ddlDeptName'의 ID를 가진 DropDownList입니다. 여기서 'GetEmployees()'메서드는 DepNo을 받고 해당 Employee들을 리턴해 줍니다.

위의 소스코드에서 GridView의 중요한 다른 부분으로는 AllowPagine 속성을 true로 한겁니다. 기존 ASP.NET에서는 개발자의 필요로 유사한 상황에서 페이징 코드를 작성해 줘야했습니다. 그리나 이 경우 'GetEmployees()'메서드는 'IQueryable'을 반환하기 때문에 엔드 유저가 GridView에 page-index를 변경했을경우 자동으로 쿼리가 업데이트되어 다음페이지가 보여지게 됩니다.

5 단계 :
Employees.aspx을 실행하고 DropDownList에서 Dname을 선택합니다. 다음과 같은 결과가 표시됩니다


ASP.NET 4.5 모델 바인딩 데모
결론 : ASP.NET4.5 Model Binding Value provider들을 사용하면 컨트롤들이 상호작용하면서 코드를 보다 적게 작성할수 있습니다.

소스코드는 : 여기에