- •Table of Contents
- •Preface
- •What is ASP.NET?
- •Installing the Required Software
- •Installing the Web Server
- •Installing Internet Information Services (IIS)
- •Installing Cassini
- •Installing the .NET Framework and the SDK
- •Installing the .NET Framework
- •Installing the SDK
- •Configuring the Web Server
- •Configuring IIS
- •Configuring Cassini
- •Where do I Put my Files?
- •Using localhost
- •Virtual Directories
- •Using Cassini
- •Installing SQL Server 2005 Express Edition
- •Installing SQL Server Management Studio Express
- •Installing Visual Web Developer 2005
- •Writing your First ASP.NET Page
- •Getting Help
- •Summary
- •ASP.NET Basics
- •ASP.NET Page Structure
- •Directives
- •Code Declaration Blocks
- •Comments in VB and C# Code
- •Code Render Blocks
- •ASP.NET Server Controls
- •Server-side Comments
- •Literal Text and HTML Tags
- •View State
- •Working with Directives
- •ASP.NET Languages
- •Visual Basic
- •Summary
- •VB and C# Programming Basics
- •Programming Basics
- •Control Events and Subroutines
- •Page Events
- •Variables and Variable Declaration
- •Arrays
- •Functions
- •Operators
- •Breaking Long Lines of Code
- •Conditional Logic
- •Loops
- •Object Oriented Programming Concepts
- •Objects and Classes
- •Properties
- •Methods
- •Classes
- •Constructors
- •Scope
- •Events
- •Understanding Inheritance
- •Objects In .NET
- •Namespaces
- •Using Code-behind Files
- •Summary
- •Constructing ASP.NET Web Pages
- •Web Forms
- •HTML Server Controls
- •Using the HTML Server Controls
- •Web Server Controls
- •Standard Web Server Controls
- •Label
- •Literal
- •TextBox
- •HiddenField
- •Button
- •ImageButton
- •LinkButton
- •HyperLink
- •CheckBox
- •RadioButton
- •Image
- •ImageMap
- •PlaceHolder
- •Panel
- •List Controls
- •DropDownList
- •ListBox
- •RadioButtonList
- •CheckBoxList
- •BulletedList
- •Advanced Controls
- •Calendar
- •AdRotator
- •TreeView
- •SiteMapPath
- •Menu
- •MultiView
- •Wizard
- •FileUpload
- •Web User Controls
- •Creating a Web User Control
- •Using the Web User Control
- •Master Pages
- •Using Cascading Style Sheets (CSS)
- •Types of Styles and Style Sheets
- •Style Properties
- •The CssClass Property
- •Summary
- •Building Web Applications
- •Introducing the Dorknozzle Project
- •Using Visual Web Developer
- •Meeting the Features
- •The Solution Explorer
- •The Web Forms Designer
- •The Code Editor
- •IntelliSense
- •The Toolbox
- •The Properties Window
- •Executing your Project
- •Using Visual Web Developer’s Built-in Web Server
- •Using IIS
- •Using IIS with Visual Web Developer
- •Core Web Application Features
- •Web.config
- •Global.asax
- •Using Application State
- •Working with User Sessions
- •Using the Cache Object
- •Using Cookies
- •Starting the Dorknozzle Project
- •Preparing the Sitemap
- •Using Themes, Skins, and Styles
- •Creating a New Theme Folder
- •Creating a New Style Sheet
- •Styling Web Server Controls
- •Adding a Skin
- •Applying the Theme
- •Building the Master Page
- •Using the Master Page
- •Extending Dorknozzle
- •Debugging and Error Handling
- •Debugging with Visual Web Developer
- •Other Kinds of Errors
- •Custom Errors
- •Handling Exceptions Locally
- •Summary
- •Using the Validation Controls
- •Enforcing Validation on the Server
- •Using Validation Controls
- •RequiredFieldValidator
- •CompareValidator
- •RangeValidator
- •ValidationSummary
- •RegularExpressionValidator
- •Some Useful Regular Expressions
- •CustomValidator
- •Validation Groups
- •Updating Dorknozzle
- •Summary
- •What is a Database?
- •Creating your First Database
- •Creating a New Database Using Visual Web Developer
- •Creating Database Tables
- •Data Types
- •Column Properties
- •Primary Keys
- •Creating the Employees Table
- •Creating the Remaining Tables
- •Executing SQL Scripts
- •Populating the Data Tables
- •Relational Database Design Concepts
- •Foreign Keys
- •Using Database Diagrams
- •Diagrams and Table Relationships
- •One-to-one Relationships
- •One-to-many Relationships
- •Many-to-many Relationships
- •Summary
- •Speaking SQL
- •Reading Data from a Single Table
- •Using the SELECT Statement
- •Selecting Certain Fields
- •Selecting Unique Data with DISTINCT
- •Row Filtering with WHERE
- •Selecting Ranges of Values with BETWEEN
- •Matching Patterns with LIKE
- •Using the IN Operator
- •Sorting Results Using ORDER BY
- •Limiting the Number of Results with TOP
- •Reading Data from Multiple Tables
- •Subqueries
- •Table Joins
- •Expressions and Operators
- •Transact-SQL Functions
- •Arithmetic Functions
- •String Functions
- •Date and Time Functions
- •Working with Groups of Values
- •The COUNT Function
- •Grouping Records Using GROUP BY
- •Filtering Groups Using HAVING
- •The SUM, AVG, MIN, and MAX Functions
- •Updating Existing Data
- •The INSERT Statement
- •The UPDATE Statement
- •The DELETE Statement
- •Stored Procedures
- •Summary
- •Introducing ADO.NET
- •Importing the SqlClient Namespace
- •Defining the Database Connection
- •Preparing the Command
- •Executing the Command
- •Setting up Database Authentication
- •Reading the Data
- •Using Parameters with Queries
- •Bulletproofing Data Access Code
- •Using the Repeater Control
- •More Data Binding
- •Inserting Records
- •Updating Records
- •Deleting Records
- •Using Stored Procedures
- •Summary
- •DataList Basics
- •Handling DataList Events
- •Editing DataList Items and Using Templates
- •DataList and Visual Web Developer
- •Styling the DataList
- •Summary
- •Using the GridView Control
- •Customizing the GridView Columns
- •Styling the GridView with Templates, Skins, and CSS
- •Selecting Grid Records
- •Using the DetailsView Control
- •Styling the DetailsView
- •GridView and DetailsView Events
- •Entering Edit Mode
- •Using Templates
- •Updating DetailsView Records
- •Summary
- •Advanced Data Access
- •Using Data Source Controls
- •Binding the GridView to a SqlDataSource
- •Binding the DetailsView to a SqlDataSource
- •Displaying Lists in DetailsView
- •More on SqlDataSource
- •Working with Data Sets and Data Tables
- •What is a Data Set Made From?
- •Binding DataSets to Controls
- •Implementing Paging
- •Storing Data Sets in View State
- •Implementing Sorting
- •Filtering Data
- •Updating a Database from a Modified DataSet
- •Summary
- •Security and User Authentication
- •Basic Security Guidelines
- •Securing ASP.NET 2.0 Applications
- •Working with Forms Authentication
- •Authenticating Users
- •Working with Hard-coded User Accounts
- •Configuring Forms Authentication
- •Configuring Forms Authorization
- •Storing Users in Web.config
- •Hashing Passwords
- •Logging Users Out
- •ASP.NET 2.0 Memberships and Roles
- •Creating the Membership Data Structures
- •Using your Database to Store Membership Data
- •Using the ASP.NET Web Site Configuration Tool
- •Creating Users and Roles
- •Changing Password Strength Requirements
- •Securing your Web Application
- •Using the ASP.NET Login Controls
- •Authenticating Users
- •Customizing User Display
- •Summary
- •Working with Files and Email
- •Writing and Reading Text Files
- •Setting Up Security
- •Writing Content to a Text File
- •Reading Content from a Text File
- •Accessing Directories and Directory Information
- •Working with Directory and File Paths
- •Uploading Files
- •Sending Email with ASP.NET
- •Configuring the SMTP Server
- •Sending a Test Email
- •Creating the Company Newsletter Page
- •Summary
- •The WebControl Class
- •Properties
- •Methods
- •Standard Web Controls
- •AdRotator
- •Properties
- •Events
- •BulletedList
- •Properties
- •Events
- •Button
- •Properties
- •Events
- •Calendar
- •Properties
- •Events
- •CheckBox
- •Properties
- •Events
- •CheckBoxList
- •Properties
- •Events
- •DropDownList
- •Properties
- •Events
- •FileUpload
- •Properties
- •Methods
- •HiddenField
- •Properties
- •HyperLink
- •Properties
- •Image
- •Properties
- •ImageButton
- •Properties
- •Events
- •ImageMap
- •Properties
- •Events
- •Label
- •Properties
- •LinkButton
- •Properties
- •Events
- •ListBox
- •Properties
- •Events
- •Literal
- •Properties
- •MultiView
- •Properties
- •Methods
- •Events
- •Panel
- •Properties
- •PlaceHolder
- •Properties
- •RadioButton
- •Properties
- •Events
- •RadioButtonList
- •Properties
- •Events
- •TextBox
- •Properties
- •Events
- •Properties
- •Validation Controls
- •CompareValidator
- •Properties
- •Methods
- •CustomValidator
- •Methods
- •Events
- •RangeValidator
- •Properties
- •Methods
- •RegularExpressionValidator
- •Properties
- •Methods
- •RequiredFieldValidator
- •Properties
- •Methods
- •ValidationSummary
- •Properties
- •Navigation Web Controls
- •SiteMapPath
- •Properties
- •Methods
- •Events
- •Menu
- •Properties
- •Methods
- •Events
- •TreeView
- •Properties
- •Methods
- •Events
- •HTML Server Controls
- •HtmlAnchor Control
- •Properties
- •Events
- •HtmlButton Control
- •Properties
- •Events
- •HtmlForm Control
- •Properties
- •HtmlGeneric Control
- •Properties
- •HtmlImage Control
- •Properties
- •HtmlInputButton Control
- •Properties
- •Events
- •HtmlInputCheckBox Control
- •Properties
- •Events
- •HtmlInputFile Control
- •Properties
- •HtmlInputHidden Control
- •Properties
- •HtmlInputImage Control
- •Properties
- •Events
- •HtmlInputRadioButton Control
- •Properties
- •Events
- •HtmlInputText Control
- •Properties
- •Events
- •HtmlSelect Control
- •Properties
- •Events
- •HtmlTable Control
- •Properties
- •HtmlTableCell Control
- •Properties
- •HtmlTableRow Control
- •Properties
- •HtmlTextArea Control
- •Properties
- •Events
- •Index
Preface
Web development is very exciting. There’s nothing like the feeling you have after you place your first dynamic web site online, and see your little toy in action while other people are actually using it!
Web development with ASP.NET is particularly exciting. If you’ve never created a dynamic web site before, I’m sure you’ll fall in love with this area of web development. If you’ve worked with other server-side technologies, I expect you’ll be a little shocked by the differences.
ASP.NET really is a unique technology, and it provides new and extremely efficient ways to create web applications using the programming language with which you feel most comfortable. Though it can take some time to learn, ASP.NET is simple to use. Whether you want to create simple web forms, or feature-rich shopping carts, or even complex enterprise applications, ASP.NET can help you do it. All the tools you’ll need to get up and running are immediately available and easy to install, and require very little initial configuration.
This book will be your gentle introduction to the wonderful world of ASP.NET, teaching you the foundations step by step. First, you’ll learn the theory; then, you’ll put it in practice as we work through practical exercises together. To demonstrate some of the more complex functionality, and to put the theory into a cohesive, realistic context, we’ll develop a project through the course of this book. The project—an intranet site for a company named Dorknozzle—will allow us to see the many components of .NET in action, and to understand through practice exactly how .NET works in the real world.
We hope you’ll find reading this book an enjoyable experience that will significantly help you with your future web development projects!
Who Should Read this Book?
This book is aimed at beginner, intermediate, and advanced web designers looking to make the leap into server-side programming with ASP.NET. We expect that you’ll already feel comfortable with HTML and a little CSS, as very little explanation of these topics is provided here.
By the end of this book, you should be able to successfully download and install ASP.NET and the .NET Framework, configure and start your web server, create and work with basic ASP.NET pages, install and run SQL Server 2005, create
Preface
database tables, and work with advanced, dynamic ASP.NET pages that query, insert, update, and delete information within a database.
All examples provided in the book are written in both Visual Basic and C#, the two most popular languages for creating ASP.NET web sites. The examples start at beginners’ level and proceed to more advanced levels. As such, no prior knowledge of either language is required in order to read, understand, learn from, and apply the knowledge provided in this book. Experience with other programming or scripting languages (such as JavaScript) will certainly grease the wheels, though, and should enable you to grasp fundamental programming concepts more quickly.
What’s in this Book?
This book comprises the following chapters. Read them from beginning to end to gain a complete understanding of the subject, or skip around if you feel you need a refresher on a particular topic.
Chapter 1: Introducing ASP.NET
Before you can start building your database-driven web presence, you must ensure that you have the right tools for the job. In this first chapter, you’ll learn how to find, download, and configure the .NET Framework. You’ll learn where the web server is located, and how to install and configure it. Next, we’ll walk through the installation of the Microsoft database solution: SQL Server 2005. Finally, we’ll create a simple ASP.NET page to make sure that everything’s running and properly configured.
Chapter 2: ASP.NET Basics
In this chapter, you’ll create your first useful ASP.NET page. We’ll explore all of the components that make up a typical ASP.NET page, including directives, controls, and code. Then, we’ll walk through the process of deployment, focusing specifically on allowing the user to view the processing of a simple ASP.NET page through a web browser.
Chapter 3: VB and C# Programming Basics
In this chapter, we’ll look at two of the programming languages that are used to create ASP.NET pages: VB and C#. You’ll learn about the syntax of the two languages as we explore the concepts of variables, data types, conditionals, loops, arrays, functions, and more. Finally, we’ll see how the two languages accommodate Object Oriented Programming principles by allowing you to work with classes, methods, properties, inheritance, and so on.
xii
Chapter 4: Constructing ASP.NET Web Forms
Web forms are the ASP.NET equivalent of web pages but, as we’ll see, the process of building ASP.NET web forms is a lot like composing a castle with Lego bricks! ASP.NET is bundled with hundreds of controls—including HTML controls, web controls, and so on—that are designed for easy deployment within your applications. This chapter will introduce you to these building blocks, and show how to lock them together. You’ll also learn about master pages, which are a very exciting new feature of ASP.NET 2.0.
Chapter 5: Building Web Applications
A web application is basically a group of web forms, controls, and other elements that work together to achieve complex functionality. So it’s no surprise that when we build web applications, we must consider more aspects than when we build individual web forms. This chapter touches on those aspects, beginning with a hands-on tour of the free IDE from Microsoft, called Visual Web Developer 2005 Express Edition. Next, we configure your web application, learn how to use the application state, user sessions, and cookies, explore the process for debugging errors in your project, and more.
Chapter 6: Using the Validation Controls
This chapter introduces validation controls. With validation controls, Microsoft basically eliminated the headache of fumbling through, and configuring, tired, reused client-side validation scripts. First, we’ll learn how to implement user input validation on both the client and server sides of your application using Microsoft’s ready-made validation controls. Then, we’ll learn how to perform more advanced validation using regular expressions and custom validators.
Chapter 7: Database Design and Development
Undoubtedly one of the most important chapters in the book, Chapter 7 will prepare you to work with databases in ASP.NET. We’ll cover the essentials you’ll need to know in order to create a database using SQL Server Express Edition. Also in this chapter, we’ll begin to build the database for the Dorknozzle intranet project.
Chapter 8: Speaking SQL
This chapter will teach you to speak the language of the database: Structured Query Language, or SQL. After a gentle introduction to the basic concepts of SQL, which will teach you how to write SELECT, INSERT, UPDATE, and DELETE queries, we’ll move on to more advanced topics such as expressions, conditions, and joins. Finally, we’ll take a look at how we can reuse queries quickly and easily by writing stored procedures.
xiii
Preface
Chapter 9: ADO.NET
The next logical step in building database-driven web applications is to roll up our sleeves and dirty our hands with a little ADO.NET—the technology that facilitates communication between your web application and the database server. This chapter explores the essentials of the technology, and will have you reading database data directly from your web applications in just a few short steps. We’ll then help you begin the transition from working with static applications to those that are database-driven.
Chapter 10: Displaying Content Using Data Lists
Taking ADO.NET further, this chapter shows you how to utilize the DataList control provided within the .NET Framework. DataLists play a crucial role in simplifying the presentation of information with ASP.NET. In learning how to present database data within your applications in a cleaner and more legible format, you’ll gain an understanding of the concepts of data binding at a high level.
Chapter 11: Managing Content Using GridView and DetailsView
This chapter explores two of the most powerful data presentation controls of ASP.NET: GridView and DetailsView. GridView supersedes ASP.NET 1.x’s DataGrid, and is a very powerful control that automates almost all tasks that involve displaying grids of data. DetailsView completes the picture by offering us the functionality needed to display the details of a single grid item.
Chapter 12: Advanced Data Access
This chapter explores a few of the more advanced details involved in data access, retrieval, and manipulation. We’ll start by looking at direct data access using ADO.NET’s data source controls. We’ll then compare this approach with that of using data sets to access data in a disconnected fashion. In this section, you’ll also learn to implement features such as paging, filtering, and sorting using custom code.
Chapter 13: Security and User Authentication
This chapter will show you how to secure your web applications with ASP.NET. We’ll discuss the various security models available, including IIS, Forms, Windows, and Passport, and explore the roles that the Web.config and XML files can play. This chapter will also introduce you to the new ASP.NET 2.0 membership model, and the new ASP.NET 2.0 login controls.
xiv
Chapter 14: Working with Files and Email
In this chapter, we’ll look at the task of accessing your server’s file system, including drives, files, and the network. Next, the chapter will show you how to work with file streams to create text files, write to text files, and read from text files stored on your web server. Finally, you’ll get first-hand experience in sending emails using ASP.NET.
Appendix
Included in this book is a handy web control reference, which lists the most common properties and methods of the most frequently used controls in ASP.NET.
The Book’s Web Site
Located at http://www.sitepoint.com/books/aspnet2/, the web site that supports this book will give you access to the following facilities.
The Code Archive
As you progress through this book, you’ll note a number of references to the code archive. This is a downloadable ZIP archive that contains complete code for all the examples presented in the book. You can get it from the book’s web site.1
The archive contains one folder for each chapter of this book. Each folder contains CS and VB subfolders, which contain the C# and VB versions of all the examples for that chapter, respectively. In later chapters, these files are further divided into two more subfolders: Lessons for standalone examples presented for a single chapter, and Project for files associated with the Dorknozzle Intranet Application, the project that we’ll work on throughout the book.
Updates and Errata
No book is perfect, and we expect that watchful readers will be able to spot at least one or two mistakes before the end of this one. The Errata page on the book’s web site will always have the latest information about known typographical and code errors, and necessary updates for new releases of ASP.NET and the various web standards that apply.
1 http://www.sitepoint.com/books/aspnet2/code.php
xv
Preface
The SitePoint Forums
If you’d like to communicate with us or anyone else on the SitePoint publishing team about this book, you should join SitePoint’s online community.2 The .NET forum, in particular, can offer an abundance of information above and beyond the solutions in this book.3
In fact, you should join that community even if you don’t want to talk to us, because a lot of fun and experienced web designers and developers hang out there. It’s a good way to learn new stuff, get questions answered in a hurry, and just have fun.
The SitePoint Newsletters
In addition to books like this one, SitePoint publishes free email newsletters including The SitePoint Tribune and The SitePoint Tech Times. In them, you’ll read about the latest news, product releases, trends, tips, and techniques for all aspects of web development. If nothing else, you’ll get useful ASP.NET articles and tips, but if you’re interested in learning other technologies, you’ll find them especially valuable. Sign up to one or more SitePoint newsletters at http://www.sitepoint.com/newsletter/.
Your Feedback
If you can’t find your answer through the forums, or if you wish to contact us for any other reason, the best place to write is books@sitepoint.com. We have a well-manned email support system set up to track your inquiries, and if our support staff members are unable to answer your question, they will send it straight to us. Suggestions for improvements, as well as notices of any mistakes you may find, are especially welcome.
Acknowledgements
First and foremost, I’d like to thank the SitePoint team for doing such a great job in making this book possible, for being understanding as deadlines inevitably slipped past, and for the team’s personal touch, which made it a pleasure to work on this project.
2http://www.sitepoint.com/forums/
3http://www.sitepoint.com/forums/forumdisplay.php?f=141
xvi
Particular thanks go to Simon Mackie, whose valuable insight and close cooperation throughout the process has tied up many loose ends and helped make this book both readable and accessible. Thanks again Simon for allowing me to write this book—I appreciate the patience and dedication you’ve shown.
Finally, returning home, I’d like to thank my wife Jessica, whose patience, love, and understanding throughout continue to amaze me.
—Zak Ruvalcaba
I’d like to thank Simon Mackie, the Managing Editor at SitePoint, for being extremely supportive during the process of writing this book. Warm thanks and gratitude go to my parents, my girlfriend, and my close friends for constantly being there for me.
—Cristian Darie
xvii
xviii
1 |
Introducing ASP.NET and the |
|
|
|
.NET Platform |
ASP.NET is one of the most exciting web development technologies on offer today. When Microsoft released the first version a few years ago, many web developers thought all their dreams had come true. Here was a powerful platform with lots of built-in functionality, astonishing performance levels, and one of the best IDEs (Integrated Development Environments) around: Visual Studio. What more could anyone want? Indeed, ASP.NET showed the way for the faster, easier, and more disciplined development of dynamic web sites, and the results were impressive.
Time has passed, and ASP.NET has grown. ASP.NET 2.0 comes with extraordinary new features as well as an expanded and more powerful underlying framework. Not only that, but the basic versions of all development tools, including Visual Web Developer 2005 Express Edition and SQL Server 2005 Express Edition, are free!
This book shows you how to use all these technologies together in order to produce fantastic results. We’ll take you step by step through each task, showing you how to get the most out of each technology and tool. Developers who have already worked with earlier versions of ASP.NET will find that the latest version has changed so much that entire chapters of this book are devoted to ASP.NET 2.0- specific features.
Let’s begin!