Developing Business Logic using the WCF Service Library with VS2K8 and ASP.NET 3.5 - Understanding the WCF Client: ASP.NET 3.5 web site
(Page 5 of 5 )
Once the service is up and running, we should have a client accessing the service. In this case, I would like to access the WCF service using ASP.NET 3.5. For this purpose, a project named "WFClientWebsite" (of type ASP.NET website) is added to the solution.
Once the web site is created, a service reference is added to http://localhost:8181/EmpService which is hosted by "NorthwindBLLServiceHost" (refer to Fig 1). Once the reference is added, a proxy gets created at ASP.NET and all of those classes are available to ObjectDataSource controls for data binding.
The following is an output screen shot which demonstrates the access to service using the ObjectDataSource control.

Understanding the WCF Client: ASP.NET 3.5 web page source code
The following is the source design (which use ObjectDataSource, FormView and GridView controls) for the above web page:
<body>
<form id="form1" runat="server"> <div>
<asp:DropDownList ID="ddlEmpLookup" runat="server"
AutoPostBack="True" DataSourceID="odsrcEmpLookup" DataTextField="ename"
DataValueField="empno"> </asp:DropDownList>
<asp:Button ID="btnEdit" runat="server" Text="Edit" /> <asp:Button ID="btnAddNew" runat="server" Text="Add New" /> <asp:ObjectDataSource ID="odsrcEmpLookup" runat="server" SelectMethod="GetLookup" TypeName="EmpService.EmpServiceClient"> </asp:ObjectDataSource><hr />
<asp:FormView ID="fvEmpInfo" runat="server"
DataSourceID="odsrcEmpInfo" DataKeyNames="empno"> <EditItemTemplate>
Empno:
<asp:TextBox ID="EmpnoTextBox" runat="server" Text='<%# Bind
("Empno") %>' /> <br />
Ename:
<asp:TextBox ID="EnameTextBox" runat="server" Text='<%# Bind
("Ename") %>' /> <br />
Sal:
<asp:TextBox ID="SalTextBox" runat="server" Text='<%# Bind("Sal") %>' /> <br />
Deptno:
<asp:TextBox ID="DeptnoTextBox" runat="server" Text='<%# Bind
("Deptno") %>' /> <br />
<br />
<asp:LinkButton ID="UpdateButton" runat="server"
CausesValidation="True" CommandName="Update" Text="Update" /> <asp:LinkButton ID="DeleteButton" runat="server"
CausesValidation="True" CommandName="Delete" Text="Delete" /> <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </EditItemTemplate>
<InsertItemTemplate>
Empno:
<asp:TextBox ID="EmpnoTextBox" runat="server" Text='<%# Bind
("Empno") %>' /> <br />
Ename:
<asp:TextBox ID="EnameTextBox" runat="server" Text='<%# Bind
("Ename") %>' /> <br />
Sal:
<asp:TextBox ID="SalTextBox" runat="server" Text='<%# Bind("Sal")
%>' /> <br />
Deptno:
<asp:TextBox ID="DeptnoTextBox" runat="server" Text='<%# Bind
("Deptno") %>' /> <br />
<br />
<asp:LinkButton ID="InsertButton" runat="server"
CausesValidation="True" CommandName="Insert" Text="Insert" /> <asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate>
<ItemTemplate>
Empno:
<asp:Label ID="EmpnoLabel" runat="server" Text='<%# Bind("Empno")
%>' /> <br />
Ename:
<asp:Label ID="EnameLabel" runat="server" Text='<%# Bind("Ename")
%>' /> <br />
Sal:
<asp:Label ID="SalLabel" runat="server" Text='<%# Bind("Sal") %
>' /> <br />
Deptno:
<asp:Label ID="DeptnoLabel" runat="server" Text='<%# Bind
("Deptno") %>' /> <br />
</ItemTemplate>
</asp:FormView><asp:ObjectDataSource ID="odsrcEmpInfo"
runat="server" SelectMethod="GetInfo" TypeName="EmpService.EmpServiceClient" DataObjectTypeName="EmpService.Employee" DeleteMethod="Delete" InsertMethod="Add" UpdateMethod="Update"> <SelectParameters>
<asp:controlparameter ControlID="ddlEmpLookup" Name="EmpNo" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters>
</asp:ObjectDataSource> <hr /><asp:GridView ID="gvEmpList"
runat="server" DataSourceID="odsrcEmpList"> </asp:GridView><asp:ObjectDataSource ID="odsrcEmpList"
runat="server" SelectMethod="GetList" TypeName="EmpService.EmpServiceClient"> </asp:ObjectDataSource>
</div>
</form>
</body>
I hope you enjoyed the article and any suggestions, bugs, errors, enhancements etc. are highly appreciated at http://jagchat.spaces.live.com.
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |