1. Trang chủ
  2. » Công Nghệ Thông Tin

Professional ASP.NET 3.5 in C# and Visual Basic Part 71 doc

10 252 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 359,11 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Listing 13-23: Using Roles.CreateRole VB Protected Sub Button1_ClickByVal sender As Object, _ ByVal e As System.EventArgs Try Roles.CreateRoleTextBox1.Text Label1.Text = "Role successf

Trang 1

<roleManager defaultProvider="LimitedProvider" enabled="true">

<providers>

<add connectionStringName="LocalSqlServer" applicationName="/"

name="LimitedProvider"

type="LimitedSqlRoleProvider" />

</providers>

</roleManager>

</system.web>

</configuration>

Remember that you have to define the provider to use in your application by providing a value for the

defaultProviderattribute and defining that provider further in the<provider>section You also have

to enable the provider by setting theenabledattribute totrue By default, the role management system

is disabled

Using the<add>element, you can add a provider instance that makes use of the

LimitedSqlRole-Providerclass Because this provider derives from theSqlRoleProviderclass, you must use some of the same attributes that this provider requires, such as theconnectionStringNameattribute that points to

the connection string to use to connect to the specified SQL instance

After you have the newLimitedSqlRoleProviderinstance in place and defined in theweb.configfile, you can use theRolesclass in your application just as you normally would, but notice the behavior of

this class is rather different from the normalSqlRoleProvider

To see it in action, construct a simple ASP.NET page that includes a TextBox, Button, and Label server

control The page should appear as shown in Listing 13-23

Listing 13-23: Using Roles.CreateRole()

VB

<%@ Page Language="VB" %>

<script runat="server">

Protected Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs)

Try

Roles.CreateRole(TextBox1.Text) Label1.Text = "Role successfully created."

Catch ex As Exception

Label1.Text = ex.Message.ToString() End Try

End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Main Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

Continued

Trang 2

Chapter 13: Extending the Provider Model

Role Name:<br />

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />

<br />

<asp:Button ID="Button1" runat="server" Text="Create Role"

OnClick="Button1_Click" /><br />

<br />

<asp:Label ID="Label1" runat="server"></asp:Label></div>

</form>

</body>

</html>

C#

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(object sender, EventArgs e)

{

try { Roles.CreateRole(TextBox1.Text);

Label1.Text = "Role successfully created.";

} catch (Exception ex) {

Label1.Text = ex.Message.ToString();

} }

</script>

This simple ASP.NET page enables you to type in a string value in the text box and to attempt to create

a new role using this value Note that anything other than the role Administrator and Manager results

in an error So, when theRoles.CreateRole()is called, an error is produced if the rules defined by the

provider are not followed In fact, running this page and typing in a role other than the Administrator or

Manager role gives you the results presented in Figure 13-7

Figure 13-7

658

Trang 3

To show this provider in action, create another ASP.NET page that allows you to add users to a particular role As stated, this can be done with a number of available methods, but in this case, this example uses theRoles.AddUserToRole()method This is illustrated in Listing 13-24

Listing 13-24: Attempting to add users to a role through the new role provider

VB

<%@ Page Language="VB" %>

<script runat="server">

Protected Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs)

Try

Roles.AddUserToRole(TextBox1.Text, TextBox2.Text) Label1.Text = "User successfully added to role"

Catch ex As Exception

Label1.Text = ex.Message.ToString() End Try

End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Main Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

Add the following user:<br />

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />

<br />

To role:<br />

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />

<br />

<asp:Button ID="Button1" runat="server" Text="Add User to Role"

OnClick="Button1_Click" /><br />

<br />

<asp:Label ID="Label1" runat="server"></asp:Label></div>

</form>

</body>

</html>

C#

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(object sender, EventArgs e)

{

try

{

Roles.AddUserToRole(TextBox1.Text, TextBox2.Text);

Continued

Trang 4

Chapter 13: Extending the Provider Model

Label1.Text = "User successfully added to role";

} catch (Exception ex) {

Label1.Text = ex.Message.ToString();

} }

</script>

In this example, two text boxes are provided The first asks for the username and the second asks for the

role to add the user to The code for the button click event uses theRoles.AddUserToRole()method

Because you built the provider, you know that an error is thrown if there is an attempt to add a user to

the Administrator role This attempt is illustrated in Figure 13-8

Figure 13-8

In this case, there was an attempt to add User2 to the Administrator role This, of course, throws an error

and returns the error message that is defined in the provider

Summar y

From this chapter and the last chapter, you got a good taste of the provider model and what it means to

the ASP.NET 3.5 applications you build today Although a lot of providers are available to you out of the

box to use for interacting with one of the many systems provided in ASP.NET, you are not limited to just

these providers You definitely can either build your own providers or even extend the functionality of

the providers already present in the system

This chapter looked at both of these scenarios First, you built your own provider to use the membership

system with an XML data store for the user data, and then you worked through an example of extending

theSqlRoleProviderclass (something already present in ASP.NET) to change the underlying behavior

of this provider

660

Trang 5

Site Navigation

The Web applications that you develop generally have more than a single page to them Usually

you create a number of Web pages that are interconnected in some fashion If you also build the

navigation around your collection of pages, you make it easy for the end user to successfully work

through your application in a straightforward manner

Currently, you must choose among a number of different ways to expose the paths through your

application to the end user The difficult task of site navigation is compounded when you continue

to add pages to the overall application

The present method for building navigation within Web applications is to sprinkle pages with

hyperlinks Hyperlinks are generally added to Web pages by using include files or user controls

They can also be directly hard-coded onto a page so that they appear in the header or the sidebar of

the page being viewed The difficulties in working with navigation become worse when you move

pages around or change page names Sometimes developers are forced to go to each and every page

in the application just to change some aspect of the navigation

ASP.NET 3.5 tackles this problem by providing a navigation system that makes it quite trivial to

manage how end users work through the applications you create This capability in ASP.NET is

complex; but the great thing is that it can be as simple as you need it to be, or you can actually get

in deep and control every aspect of how it works

The site navigation system includes the capability to define your entire site in an XML file that

is called a site map After you define a site map, you can work with it programmatically using the

SiteMapclass Another aspect of the sitemap capability available in ASP.NET is a data provider that

is specifically developed to work with site map files and to bind them to a series of navigation-based

server controls This chapter looks at all these components in the ASP.NET 3.5 navigation system

The following section introduces site maps

Trang 6

Chapter 14: Site Navigation

XML-Based Site Maps

Although a site map is not a required element (as you see later), one of the common first steps you take

in working with the ASP.NET 3.5 navigation system is building a site map for your application A site

map is an XML description of your site’s structure

You use this site map to define the navigational structure of all the pages in your application and how

they relate to one another If you do this according to the ASP.NET site map standard, you can then

inter-act with this navigation information using either theSiteMapclass or the SiteMapDataSource control By

using the SiteMapDataSource control, you can then bind the information in the site map file to a variety

of data-binding controls, including the navigation server controls provided by ASP.NET

To create a site map file for your application, add a site map or an XML file to your application When

asked, you name the XML fileWeb.sitemap; this file is already in place if you select the Site Map option

The file is namedWeband has the file extension of.sitemap Take a look at an example of a.sitemapfile

illustrated here in Listing 14-1

Listing 14-1: An example of a Web.sitemap file

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

<siteMapNode title="Home" description="Home Page" url="Default.aspx">

<siteMapNode title="News" description="The Latest News" url="News.aspx">

<siteMapNode title="U.S." description="U.S News"

url="News.aspx?cat=us" />

<siteMapNode title="World" description="World News"

url="News.aspx?cat=world" />

<siteMapNode title="Technology" description="Technology News"

url="News.aspx?cat=tech" />

<siteMapNode title="Sports" description="Sports News"

url="News.aspx?cat=sport" />

</siteMapNode>

<siteMapNode title="Finance" description="The Latest Financial Information"

url="Finance.aspx">

<siteMapNode title="Quotes" description="Get the Latest Quotes"

url="Quotes.aspx" />

<siteMapNode title="Markets" description="The Latest Market Information"

url="Markets.aspx">

<siteMapNode title="U.S Market Report"

description="Looking at the U.S Market" url="MarketsUS.aspx" />

<siteMapNode title="NYSE"

description="The New York Stock Exchange" url="NYSE.aspx" />

</siteMapNode>

<siteMapNode title="Funds" description="Mutual Funds"

url="Funds.aspx" />

</siteMapNode>

<siteMapNode title="Weather" description="The Latest Weather"

url="Weather.aspx" />

</siteMapNode>

</siteMap>

662

Trang 7

So what does this file give you? Well, it gives you a logical structure that ASP.NET can now use in the

rest of the navigation system it provides Next, this chapter examines how this file is constructed

The root node of this XML file is a<siteMap>element Only one<siteMap>element can exist

in the file Within the<siteMap>element, there is a single root<siteMapNode>element This is

gen-erally the start page of the application In the case of the file in Listing 14-1, the root<siteMapNode>

points to theDefault.aspxpage, the start page:

<siteMapNode title="Home" description="Home Page" url="Default.aspx">

The following table describes the most common attributes in the<siteMapNode>element

Attribute Description

title Thetitleattribute provides a textual description of the link TheStringvalue

used here is the text used for the link

description Thedescriptionattribute not only reminds you what the link is for, but it is also

used for theToolTipattribute on the link TheToolTipattribute is the yellow box that shows up next to the link when the end user hovers the cursor over the link for

a couple of seconds

url Theurlattribute describes where the file is located in the solution If the file is in

the root directory, simply use the file name, such as"Default.aspx" If the file is located in a subfolder, be sure to include the folders in the String value used in this attribute For example, ‘‘MySubFolder/Markets.aspx’’

After you have the first<siteMapNode>in place, you can then nest as many additional<siteMapNode>

elements as you need within the root<siteMapNode>element You can also create additional link-levels

by creating child<siteMapNode>elements for any parent<siteMapNode>in the structure

The example in Listing 14-1 gives the application the following navigational structure:

Home

News

U.S

World

Technology

Sports

Finance

Quotes

Markets

U.S Market Report

NYSE

Funds

Weather

You can see that this structure goes down three levels in some places One of the easiest places to use this file is with the SiteMapPath server control that comes with ASP.NET The SiteMapPath server control in ASP.NET is built to work specifically with the.sitemapfiles

Trang 8

Chapter 14: Site Navigation

SiteMapPath Ser ver Control

It is quite easy to use the.sitemapfile you just created with the SiteMapPath server control provided

with ASP.NET You can find this control in the Navigation section of the Visual Studio 2008 IDE

The SiteMapPath control creates navigation functionality that you once might have either created

your-self or have seen elsewhere in Web pages on the Internet The SiteMapPath control creates what some

refer to as breadcrumb navigation This is a linear path defining where the end user is in the navigation

structure TheReuters.comWeb site, shown in Figure 14-1, uses this type of navigation A black box

shows the breadcrumb navigation used on the page

Figure 14-1

The purpose of this type of navigation is to show end users where they are in relation to the rest

of the site Traditionally, coding this kind of navigation has been tricky, to say the least; but now with

the introduction of the SiteMapPath server control, you should find coding for this type of navigation

a breeze

You should first create an application that has theWeb.sitemapfile created in Listing 14-1 From there,

create a WebForm calledMarketsUS.aspx This file is defined in theWeb.sitemapfile as being on the

lowest tier of files in the application

664

Trang 9

The SiteMapPath control is so easy to work with that it doesn’t even require a data source control to

hook it up to theWeb.sitemapfile where it infers all its information All you do is drag-and-drop a

SiteMapPath control onto yourMarketsUS.aspxpage In the end, you should have a page similar to the one shown in Listing 14-2

Listing 14-2: Using the Web.sitemap file with a SiteMapPath server control

<%@ Page Language="VB" %>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Using the SiteMapPath Server Control</title>

</head>

<body>

<form id="form1" runat="server">

<asp:SiteMapPath ID="Sitemappath1" runat="server">

</asp:SiteMapPath>

</form>

</body>

</html>

Not much to it, is there? It really is that easy Run this page and you see the results shown in Figure 14-2

Figure 14-2

This screenshot shows that you are on the U.S Market Report page atMarketsUS.aspx As an end user, you can see that this page is part of the Markets section of the site; Markets, in turn, is part of the Finance section of the site With breadcrumb navigation, end users who understand the structure of the site and their place in it can quickly select the links to navigate to any location in the site

If you hover your mouse over the Finance link, you see a tooltip appear after a couple of seconds, as

shown in Figure 14-3

Trang 10

Chapter 14: Site Navigation

Figure 14-3

This tooltip, which readsThe Latest Financial Information, comes from the description attribute of

the<siteMapNode>element in theWeb.sitemapfile

<siteMapNode title="Finance" description="The Latest Financial Information"

url="Finance.aspx">

The SiteMapPath control works automatically requiring very little work on your part You just add the

basic control to your page, and the control automatically creates the breadcrumb navigation you have just

seen However, you can use the properties discussed in the following sections to modify the appearance

and behavior of the control

The PathSeparator Property

One important style property for the SiteMapPath control is thePathSeparatorproperty By default, the

SiteMapPath control uses a greater than sign (>) to separate the link elements You can change this by

reassigning a new value to thePathSeparatorproperty Listing 14-3 illustrates the use of this property

Listing 14-3: Changing the PathSeparator value

<asp:SiteMapPath ID="Sitemappath1" runat="server" PathSeparator=" | ">

</asp:SiteMapPath>

Or

<asp:SiteMapPath ID="Sitemappath1" runat="server">

<PathSeparatorTemplate> | </PathSeparatorTemplate>

</asp:SiteMapPath>

The SiteMapPath control in this example uses the pipe character (|), which is found above the Enter key

When it is rendered, you get the results shown in Figure 14-4

As you can see, you can use either thePathSeparatorattribute or the<PathSeparatorTemplate>

ele-ment within the SiteMapPath control

666

Ngày đăng: 05/07/2014, 18:20