((ASP. masterpage_master)Master).MessageBoxVisible = true;

((ASP. masterpage_master)Master).MessageBoxText =

"Вы не авторизованы!";

((ASP. masterpage_master)Master).MessageBoxColor =

System. Drawing. Color. Red;

Вопрос. Как в таблицу GridView вывести картинку, имя которой хранится в текущей строке источника данных?

Например, в список книг будем выводить их обложки. Вспомним, что в таблице books есть столбец image varchar(50) (используйте именно тип varchar, чтобы избежать концевых пробелов). Пусть в этом столбце хранится точный путь к картинке относительно корневого каталога в таком виде: ~/images/имя_файла. тип_файла.

В свойствах объекта GridView выберем Columns. В верхнем списке выберем тип ImageField и нажмем кнопку Add. Затем в списке свойств этого поля назначим свойство DataImageURLField=image (т. е., имя столбца в таблице books). Кроме того, здесь имеет смысл назначить свойства DataAlternateTextField (альтернативный текст) и NullImageURL (имя картинки-«заглушки» по умолчанию, которая будет выдаваться на экран, если в базе данных имя картинки отсутствует).

Вопрос. Как в работать с ключиками?

Массивы ключиков (cookies) являются свойствами объектов Response и Request, которые, в свою очередь, являются свойствами объекта типа Page (от него наследуются все aspx-страницы).

Например, создадим уникальный ключик для идентификатора корзины покупателя, который будет храниться у клиента 2 недели:

Response. Cookies["id_bask"].Value = ""+System. Guid. NewGuid();

НЕ нашли? Не то? Что вы ищете?

Response. Cookies["id_bask"].Expires=DateTime. Now. AddDays(14);

Прочитать значение ключика из клиентского запроса можно будет, например, так:

string id_bask=Request. Cookies["id_bask"].Value;

Вопрос. Как создать список гиперссылок следующего вида? В базе данных имеется таблица категорий, содержащая коды и названия. Гиперссылка должна представлять собой название категории, а при щелчке на гиперссылке должен вызываться один и тот же сценарий, в который передается код категории.

Для создания такого списка подходит объект DataList. Прежде всего, его следует связать с источником данных. Пусть, например, в источнике данных задан следующий запрос:

SELECT [Id_cat], [Name_cat] FROM [Categories]

Содержимое списка будем настраивать непосредственно в aspx-сценарии. Внутри тэга <asp:DataList></asp:DataList> зададим следующий код для шаблона строки:

<ItemTemplate>

<asp:HyperLink ID="Name_catLabel" runat="server" NavigateUrl='<%# Eval("Id_cat", "~/show. aspx? id={0}") %>' >

<%# Eval("Name_cat") %>

</asp:HyperLink>

<br />

</ItemTemplate>

Вопрос. Стандартные объекты GridView, DetailsView не всегда подходят для удобного представления табличных данных. Как можно вывести, например, список книг в таком виде:

Для создания такого списка подходит объект Repeater. Прежде всего, его следует связать с источником данных. Пусть в источнике данных выбирается вся нужная информация о книгах.

Внешний вид этого объекта будем настраивать непосредственно в aspx-сценарии. Внутри тэга <asp:Repeater></asp:Repeater> зададим следующий код для шаблона строки:

<itemtemplate>

<table border="1" width="100%">

<tr><td rowspan="6" width="30%">

<asp:Image ID="Image1" runat="server"

ImageUrl='<%# Eval("image", "~/images/{0}") %>' /> <br/> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl=

'<%# Eval("Id_book", "~/dobasket. aspx? id_book={0}") %>'>

положить в корзину </asp:HyperLink></td>

<td align="right" width="20%"><b>Название</b></td>

<td><%# Eval("name_book") %>

</td></tr>

<tr><td align="right"><b>Автор</b></td>

<td><%# Eval("author") %>

</td></tr>

<tr><td align="right"><b>Издательство</b></td>

<td><%# Eval("name_publ") %>

</td></tr>

<tr><td align="right"><b>Категория</b></td>

<td><%# Eval("name_cat") %>

</td></tr>

<tr><td align="right"><b>Цена</b></td>

<td> <%# Eval("price") %>

</td></tr>

<tr><td align="right"><b>Страниц</b></td>

<td><%# Eval("pages") %>

</td></tr>

</table>

</itemtemplate>

Приложение 2. Как обойтись без Configuration

Как создать и настроить базу данных, роли, пользователей, полномочия, без средств администрирования ASP Configuration

1.  Создаем базу данных.

Для этого следует:

1) запустить утилиту создания -базы данных (примерный путь)

C:\WINDOWS\\Framework\v2.0.50727\ aspnet_regsql. exe

2) на третьей странице мастера назначить точное имя сервера (например, HOME\SQLEXPRESS), после этого база данных будет создана автоматически;

3) затем в свойствах web-проекта в папке App_data выбрать пункт Add existing item, найти файл базы данных (примерный путь к нему C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ ASPNETDB. MDF) и подключить его к проекту. Файл будет скопирован в папку App_data.

2.  Настраиваем тип аутентификации

В файл web. config корневого каталога вместо кода

<authentication mode="Windows"/>

следует поместить такой код:

<authentication mode="Forms">

<forms loginUrl="default. aspx"/>

</authentication>

Режим аутентификации mode=”Forms” означает, что мы не полагаемся на пользователей Windows, а будем создавать их сами специально для нашего web-приложения. В этой секции мы также указываем имя страницы, которая загружается для неавторизованного пользователя (по умолчанию это файл login. aspx).

3.  Создаем роли

В файле web. config в секции <system. web> включим команду, разрешающую использование ролей:

<roleManager enabled="true"/>

В проекте отсоединим файл базы данных (щелкнуть правой кнопкой мыши по базе данных – Detach), в SQL Management Studio – присоединим его (щелкнуть правой кнопкой мыши на пункте Базы данныхПрисоединить).

В SQL Management Studio выполним команды, создающие роли:

EXECUTE aspnet_Roles_CreateRole '/', 'librarian'

EXECUTE aspnet_Roles_CreateRole '/', 'collector'

EXECUTE aspnet_Roles_CreateRole '/', 'warehouse'

4.  Назначаем ролям права доступа

Внутри нашего корневого каталога создаем 3 каталога, совпадающие по названиям с именами ролей.

Назначить права доступа, например, для каталога библиотекаря можно так: в каталог библиотекаря следует поместить следующий файл web. config.

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

<configuration>

<system. web>

<authorization>

<allow roles="librarian" />

<deny users="*" />

</authorization>

</system. web>

</configuration>

Доступ разрешается только библиотекарю, всем остальным он запрещен (назначения доступа читаются снизу вверх).

5.  Наконец, создаем пользователей и привязываем их к ролям.

В SQL Management Studio выполним команды:

-- создание пользователя john с паролем absdef_

DECLARE @UserId uniqueidentifier

DECLARE @PasswordSalt nvarchar(128)

DECLARE @CurrentTimeUtc datetime

DECLARE @CreateDate datetime

SET @PasswordSalt=NEWID()

SET @CurrentTimeUtc=GETUTCDATE()

SET @CreateDate=GETDATE()

EXECUTE aspnet_Membership_CreateUser

'/'

,'john'

,'absdef_'

,@PasswordSalt

,NULL

,NULL

,NULL

,1

,@CurrentTimeUtc

,@CreateDate

,NULL

,0

,@UserId

-- добавление пользователя john к роли librarian

EXECUTE aspnet_UsersInRoles_AddUsersToRoles

'/'

,'john'

,'librarian'

,@CurrentTimeUtc

В завершение отсоединим базу данных в SQL Management Studio. Для этого нужно щелкнуть правой кнопкой на базе данных – ЗадачиОтсоединить.

Наконец, в Visual Studio нужно обратно присоединить базу данных: щелкнуть правой кнопкой на базе данных и выбрать Refresh.

Приложение 3. Web-сервисы

Web-сервисы представляют собой очень удобную технологию удаленного доступа к данным и программам. Web-сервис можно представить себе как некоторый объект, который имеет свойства и методы и расположен по некоторому Internet-адресу. В определенном смысле это развитие COM-технологий в Internet-программировании.

Создадим простой Web-сервис, который выполняет поиск названия книги по ее ISBN-номеру.

Щелкнем правой кнопкой по имени сайта в SolutionExplorer, выберем тип WebService. По умолчанию создается файл WebService. asmx, а его код с названием WebService. cs помещается в каталог App_code.

Кроме стандартных библиотек, здесь нам потребуются следующие:

using System. Data; // для DataView

using System. Web. UI; // для DataSourceSelectArguments

using System. Web. UI. WebControls; // для SqlDataSource

using System. Configuration; // для ConfigurationManager

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14