((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 |




