Академический Документы
Профессиональный Документы
Культура Документы
Снетков
Программирование
на ASP.NET
В.М. СН"",,,В
Программирование на ASP.NET
2-е и здани е, и с п равле нное
С нетков В.М .
2016
,
В.М. СН"",,,В Програм",ирование на ASP. NET
Прогр амм ировани е на ASP. NEТ/ В. М. Сне"ПФв - М.: Национ альный (}п.;рьпый
Униве р ситет" ИНТУИТ ", 2016
Кур с посвящен технологии прогр а ммирова ния web-прило жений на AS P. NEТ с
и спо льзованием Visua! Studio 2005.
В ку р с е по рроб но рассказывается об этапах создания web-са йmв, прогр аммировании
форм , сер верных и пользовательских элементах управления. Расска зывается о
средствах форм аmрования стра ниц, технологии ADO.NEТ, работе с файлам и и
каталогам и и упра влении бе зопаС НО СTh Ю са Йта .
Создание заготовки
.. ",-.- 1.
~ · IiiI III . 8,") . ('10 . ~l"
0 ' Ы ~H
0 0> '=
I 1I _
CJТЩJ
'ho",.,...,' "'''.' (horn<ImIфf not ""..-"" V"''''nfOm<t
ТooII. """""' di<k apno"", 11,.,., . """'., Е'''''''",.,,.,,I ..-.:1 <" S
0
0~
", ,-
~
С О1 +(
ClJIH
0 " ew
0 ' smDebuo;lл ;;
0 _C""W--.,
Solb::<l EXPOr<r C ~ I+ дI: + L
0 "
0 '" PГCV'""" \\' гФ"
"
0k Tool:x:>x Cb1 +N:·X
R.""Tocbo-
орtюпs
-"
~_. Envirrn rnent Аt s И--Цо :
I€'ИЬЩ.
Add- n;Ма cros Securiti
AutoRocover s и--t Рagoэ r>3WS cha .-.--.з l:
IhtIjJ:// msdl,m o:rosoft,com/sqlfrss"ml
Fm ar.::1 Реросе
Frnts ,.--,j Co crs Р [>]"",Oad сrnten! еуегу :
~ m rutes
I ~t ar.::1 Ехрor! Setth;)s
InternatOтia I Settщ s
Keybo<f-d
S"',<
Тaзk List
Вr o wser
ос C,.-, ce l
в.м. СН"",,,В Програм ", ирование на ASP. NET
Errpty Web
Si.,
Se:>fchOnlre
Т ОЩJ ", II»
Loca oo :
,
В.М. СН"",,,В Програм",ирование на ASP. NET
< !DO CТYP E html PUBLIC "- IIWЗС IIDШ ХНТМ L 1.0 Tra nsitio naVIEN" 'hu,
</div>
</foпn>
<!body>
<lhtml>
~ C:\",\WebSitel \
~·"~i;':.
t:I DefaLjtaspx.CS
Файлы >1< .aspx и >1< .aspx.cs - это файлы обычного те кстового формата . Мы
можем и х создавать и редактировать в обычном текстовом редакторе ,
н апример , Notepad (Бло кнот). Но в оболочке Visua! Studio 2005 это
,
в.м. СН"",,,В Програм ", ирование на ASP.NET
,
В.М. СН"",,,В Про грам ",и рование на AS P. NET
~ Cut
Сору
~ Р.зstе
I
~WebSltel
:::J f'G:!
AS P.N ET
_~_""ID I~
,СШJN1 ,,1
файлов.
Flle System
~ Select Ihe fO (jer уоо WCflt to 0 jE1 ,
Ffe System
I!J-O A ~JET - ~ I К ю-и-е C ~T Ст>ЕеН •
~ ~,O Larq.Jage C~
!Е-О Lar-qлge С+-+-
Local IIЗ
i!J-О LосlJJгес-r
~
FТF' Site
Remote Site
~-O u~
!Е-О VB,~T - i1J~1ы к »-К8 БарК9iJ Скоп, Ф
~-O Vrзu<ll С+-+- SlJJdioJ ,NET
В-О lМ:B
E;j·D ASP,I\ET
!ЕС! Cmtвlt
u
вС! EX<lmple~
, Ша .М"
~,O Pi::IJJ8S
I!J D [):Jfcu lt
@О Dв1vff2
~o Flash МХ 2004
@-а Flash_pfiJ
GO HT~
I!JD i::OIlS
~· o JavаSс фt
..:J
FoШ: Iс :\Cha Г\ВООk\I"IEВ\.>.SP ,NЕТ\ЕхаЩJles\We!JSitE 1
Оpen CCtxel
---
Ве SLfe the correct SCUce сопП-оl РЩ Iп is actiVe,
агЮ гю 1iIes are exdJsivery c:hecked out Ьу other
users.
ОрtlOПS
"*iIiJ
-"
~ -- Envirrnrnent Visual S!L.dOJ р; ор;:tз b:atm :
I,КОО. З87ХВ87DА244ЕЕ\W'" Щ gMМiW@itii"', "ЩФiD ~
Add- n;Ма cros Securiti
AutoRocover
1 4ЕЕ\М:<1 дС»И3Нты\Visual SW OJ 2005\ТеЩJ~tes\Ргор;:tтеЩJ~tes ~
Fm ar.::1 Реросе
Visual S!L.d OJ LSer item te"l'~tes
Frnts ,.--,j Co crs
I2448Е'МJи Де><уМЕ!Нты\Visual S!L.d OJ 2005\Те ЩJ~tes\ItemТе ЩJ~tes ~
I ~t ar.::1 Export Setth;)s
р А~ЩS smw Errcr List if b.J i(J finisГes with errct's
InternatOтia I Settщ s
Keybo<f-d Р Tra:k Active 118т n So lJtm Exp crer
9"'< Р SOOw ad\Iar.::ed bui(J coofg.rat ions
Тaзk List Г A~ays smw so u tm
Вrowser
Р Save rew p; op;:ts..tJen created
~- Projocts ar.::1 So U1:ions
Р "',..-п user v.t.эn tt-.з prop;:t b:atm is оо! 1rusted
$-- 5с...-се Crn1rol
i!J-- Тех! Editcr Г stюw оuч:out wr-dJw v.t.эn bJ i(J sta.-ts
I!J- Вusiness Intellqэncе Оезg:-вз Г PrO"l't fa- syrrbol O:: г"""m O:--<j Yvt.эn гюаm O:--<j fies
~- Оаtabзsе Tools
i!J- Debo...щ Щ
ос C,.-,cel
о< Car>:EI
D lШ
--~
--~
~ [;J ~
App_Data Default. aspx Web.Conlig WebSitel,sln WebSitel,suo
ОрtlOПS
I
Misc81~OCUS нтм.. ~ t o:m
-"
, Fi~ Е~tens оо
$ AII L"'"'F"ges
i!J Вдs o:
i!J CI
$ c;I:++
i!J css
-"
9 НТм..
, TdIbs
",m'
г "МЩi§.og
V"ldat oo
$ P~ " Text
i!J SQ.. Scr " t
ос C,.,cel
Cut
Сору
Paste
Paste Alteгn.ate
Х D~ete
View code
I!l View il Browseг
Synchronize Document Outjine
Fcxmat StЭect:ioп
Forma1jjng аnd Validation
we Ь .соп fig
конкретного приложения , содержащий настройки
безопасности , управления состоянием , памятью и др .
Создается оболочкой при создании первой страницы.
Для но рмальной работы приложения среда про ектиров ания , как и среда
выполнения , нуждаются в б и бл иотечных файлах и ссылках на ни х. По
"
в.м. СН"",,,В П рограм ", ирование на AS P.N ET
задач).
dd Reference
~"""
7,0,3:DJ,0 vl,O,3705 c:lfrogram Fies\Comm"
sysg ru l 2,0,0.0 ~2,0,50727 С:\WINNТlf.1iсгosoft,r-.E"
Syst8m 2,0,0.0 v2,0,50727 C:\W INNT\jI-1iсгosoftr-.E"
Syst8m,Cm fg..ratrn
еж Cct"lCel
</system. web>
</сопfigша tloп>
sta"t
~ View in Вrowser
~ Cut
Сору
Paste
R.t.-=.
BLМ
Acc.ssbllty
SШ- t qotкrJ>
r~SВ uld 0;:U:rIS
ыщ
= '% ------,'1 ~
'!Г
Clст Desgner
Оаш Design
DаtaЬзsе Dlig-am
Derug
ОЮJg Location
Oewe
Olibg Editor
Formal:trg
Image Edtor
Laywt
QU<:!Гy Designer
Report В<xders
Report Formal:trg
S:::oJrce CmlIoI
stcnJ.ard
StyI<:o Sh:et
Table Desi g-er
Text Editor
\fiew Desigler
XГVL Dаш
хм... Ed tor
хм... Schema
Customi:ze"
~~~
" ~=~6'O~~~ Page
~tsc~ Navф tcr 3,0
в <5cr:ipt r:unat =
I pr:otected vо EJ~~~~Wl~~ct-,~~с,с,"~~Ig'-ет--~
<system.web>
< xhtmlllСопfоrma псе е паыeьs оl еtеR епdегiпg="truе" />
</system.web >
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Введение в Web-сайты
<html>
<head >
< titlе >Uпtitled Dо с umепt </titlе >
< mеы http -еq illv= "Со пtе пt-Туре" content=''textlhtml; charset=windows- 1251">
</head>
<body>
<h2 аlign="сепtег' '> Страница с об ратн ой отсылкой</h2 >
< fо пn паmе ="fопnl " method="post" action="">
<center>
<input type="submit" name="S ubmit" value="Submit''>
</center>
</foпn>
</body>
</html>
и дет сеа нс
( сессия )
г--
Запрос / GEТ
" Запрос
а..
w ОТклик"
) Паkеты
< ОТклик
(')
m
м Il. /
::J:
1- "tJ
~
-1
1-
::J: Обратная Обратная -1
"'tI m
а..
ОТСЫЛr.:з/ POST ,ОТСЫЛr.:з
m
LO
~ отклик"
) Паkеты
<
/ ОТКЛИК
"tJ
"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
A_
= ral:e< ""~"
Corfipotrn
Irt~R )
Едсе "
Irt"""",
""~ ,--
А "тс..."н " А д "",,-,::т р " Дат" н "Р"Н"
~~
.%"
..,."' Т ЖМ",
~-
~
y cт po:k T ",
~
К-""-"т у ра -, 'о
~-
~
'М-"К1
Q;,
"_.
Г'оо"Ь>О<оОТ "
(о)
~"
~"
Сеть "
YA'neнны1 "
С "" "Т е",,
,-
CK_r-ы " C""ц "~JЪНЫe
00ЗЮ)о(НОСТ Н
Те,,"фоо "
~,~
~
,~ ,
[&]
_О"
11
х"
~
Э"е""pont1 " ,-"
С Тi>t<Д "l' ТЫ
... :"81·
~ .•
добаВЛ~~I1Е! И
удаленне ~I
KO~OHeHTOB ~
Про,раммupoвtJNШ' 110 ASP.NET
Windows ,~,
Компоненты Windows
Вы молсете дооаеить ИJlI.i lJ\ал.IIЪ KOМ'lc.1eнты Windovvs 21]00
Комnoне
СС~С':'~-С________________________________~~~СО
11Mf1 ...:J
Опvcание СJl\jЖбы 115 (пщцеРJJ:ка 006 и FТР]СГlO,IJД8ржкO!iFrOlltРа.;щ
Т~Ю~ЦИЙ~ cтp~"'-IASP, поо.клlOчеr-и:. к Мз.У>1Д~Х И
aspnet_regiis.exe /i
=- Inetpub
---------------------
сервером.
Зе",ф 01 1,...,
Terrp~tes",
[] З87ЗС887DА2448Е
CJ COIlsole Root
I±Н:З Fron1:Page Server ExtenslOnS
_т е
Bгowse Witll.,.
Re1Yesh FoIder
Cut
Сору
Paste
Property Pages
G1о Ь а lR еsошсеs
Содержит файлы ресурсов .resx и .resources,
Арр
- компилирующиеся в глобальные сборки
Зе",ф 01 1,...,
Terrp~tEs",
в nан ели Solution Exp lorer мы увидим файл разметки стра ницы
Default.aspx и файл отделенно го кода Defauk. aspx.cs (застраничный файл ,
фоновый файл поддержки), а также созда нную особую папку Арр_Оаы
App_Data
В ~ D€faut,aspx
!J D€fault,aspx,cs
~523b9284 111
~Edt V'feW Fav<Xltes TooIs НеР
'"' Bock .... ...... i!J I <a Seif"ch ~ Fd:1ers @ [.~ ~ )< ~ J шm ....
Addess I"E; с :\WI~rosoftJ.ET\Framew<xk\Y2,O, 50 727\Temporif"Y АЧ',~ FIes\mуlТstsitе\Збd2а9ю\52::Ь9284
• defiUt,аspх,сdcю7d2_свt>Pes ut,сcu
• defдJt,аspх,сdcю 7d2_cвt>Pes utcomp!<:d
hash, web
создан ии DLL-библиотеЮ1.
-
•
&J
с <ы
r.w lc atL"
D
Мао"" р"'9"
iЭ
"оо
Crnfg.xati"
~
Wob uoc>r
Cm1rol
••
х м.. File хи
~
н тм.. р"?,,
1m
.. Schema
~
Woo SerV CG
li1
Тех l File
~
C~C
JjJ
P escиce Fi le
~
sty k> ShGGt
1]
SQ.. Database
1m !i]
- , ~ ~. ~ ~ ~
DataSE't
~~
Si"~ ~ ile w eb
Fct"m
VВScrjJt File
"-' JScr " t File
Name : I Page2,aspx
~523b9284 _
:.о 523Ь9284 _
---------------------------------------------------------------
конфигурационные файлы
machine.conf1g
е CONF IG
i
web.-col1ffg
• CON FIG
t
wеЬ .сопfig
е wwwroot
f f
vveb.con'fig vveb.conflg
е wwwroot\WebApp1
... е wwwrootl.We bA ppN
t f
в
web.conf1g
VW!bApp1\Dir1
... е
web.config
WebApp1\D irM
...
Способ 1
Тм page carmt ье rm in dei:u;J rmde b8CEtJSe debuggh;j i:3 mt anabled n th8 Web,coofl;J
file. What would you like to do?
ОК CEi1cel
предла гающее добавить новый файл web .co nfig с о пци ей включения
отладки. Ниже БУдет пр ед.УПреждение, что п е ред развертыванием
отлаженного прилож е ния эту о пцию в файле настроек следует Удалить .
Щелчок на кно пке Ok заставит оболочку создать web.config в корне
"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Способ 2
U~e thi~ раае to configure your application with values t hat you do not V'lant
to ha rd -code into your page~, епаЫе your application to ~end e-mail,
configu re debugging, set up а default еггог page, and stop ог start your
applici'Jtion.
""'"
.1
Config ure the settings for deb LJgging and tracing your
аррliсаtiо п.
г ЕпаЫе dеЬugg i пg
г Capture tracing information
с Ву categoгy
Способ 3
~
с<ы
~
X~ Fi"
tm
XI~ Schema
li1
Text Fi"
!IJI
Resc....-ce Fi "
IJ
SQ.- Database
"W1c atL"
tm -~, ~ шf· ~ ~ ~
DataSet
~ff
Si l9~ ~ i "Web
Fe<m
VВScr"t Fi"
"-' JScr " t Fi"
умолча нию
виртуальную страничу
перезагрузки: компьютера
Добавляет трассировку в
ОТЮlик страницы только
@ Local юсаlOnly= ''truе'' - по
тогда, когда она запрошена с
requests only умолчанию
того же сервера, где
развернуга ( по умолчанию)
Добавляет трассировку в
ОТЮlик страницы по запрос)';
O All requests юсаlOnly= "falsе"
поступившему с любого
компьютера
О Ву categary traceMode="SortByCategory"
Результаты трассировки
сортируются по секциям
Количество запросов
страниц приложения ,
сохраняемых средой
исполнения в файле trace.axd.
Number of Э тот же параметр определяет
trace requests количество запросов первых
to requestLimit="lS"
запросов, при которых
ИНДИВИдУальной странице
трассировочную
инф:Jрмацию при
pageOutput= ''true''
Se)ect whk:h trace resuks to cache:
Сохраняются результаты
O Most recent
mostRecent= ''true'' трассировки самых
trace results
последних запросов
При достижении
установленного количества
перестает обновляться до
@ Oldesttrace mostRecent= "false" - по
следующего перезапуска
resuks умолчанию
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
приложения, сохраняя
результаты трассировЮ1
умолчанию.
~--- -~
Привет всем!!!
Request Details
Session Request
х 5cbOs22bs5b1445rm3 1d u 55 GET
Id: Туре:
Time of St.atus
07.01.200811:00:40 200
Request: Code:
Request Response Unicooe
Unicooe (UТF-8)
Encoding: Encoding: (UTF-8)
Тгасе Infoгmation
From LlI~
ClItegory MesslIge From First(s)
(.)
aSpX.page Вegin PreInit
aSpX.page End PreInit 0,0182579070803692 0,018258
aSpx.page Вegin Init 0,0209208153550242 0,002663
aSpx.page End Init 0,0389624938 3 6 50 72. 0,018042
aSpx.page Вegin InitComplete 0,0394064050039879 0,00044<CJ
aSpx.page End InitComplete 0,0407646781923401 0,001358
aSpx.page Вegin PreLoad 0,0427593451122978 0,001995
aSpx.page End PreLoad 0,0441952818025755 0,001436
,.,~~,- '~~...I .....
C~<><>" <>,...,....,,~,...
Если тр ассир овка страниц В Юlюче на « trace enabled= " true "
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Flle Sys:tem
9:t
Re System
Select lt1e foOO- уоо w,.-,t to Cf'8'l.
] ЕМ'ТЕ МО
~ ,~""'
Adm n 5cr \Jts
Loczl IIS
~
"'00'
iВsa rllJ Рз
J
Re mote Ste
IfJO
~D kav
iED KPCМS
iEO LJ
iED f..'OO ile PhJnes
iED ~8Cow_2OJ6
юD мs SQL SERYER
iEO rr=bs
tiIo М5SQ.J
IfJO f.i: _1
~ ,,",~,~L-.; n.,cc,~~" ~
FoOO- :
'1 с".~':~:~"'ш:\:~=м:оо:::,--------_"':='---==-
cpen Са гсе l
Flle Sys:tem
Re
9:tSystem
Select lt1e foOO- уоо w,.-,t to Cf'8'l.
юD IDWTEМO •
~ $а Inelp<b
~ ·O Adm n 5cr \Jts
Loczl IIS
IE О flp;oot
~ IE О iВsa rllJ Рз
FТP Ste еО rnai r oot
IEO 5cr \Jts
IEО WЩ:м.Ь
I;JO r:lll!l
J
Remote Ste
юО МyF rstsite
IfJO JВu Нзг7
~D kav
iEO KPCМS
iEO LJ
iED f..'OO ile PhJnes
iED ~8Cow_2OJ 6
юD мs SQL SERYER
iEO rr=bs
tiIo М5SQ..7
IfJO f.i: _1
..L..J,..C'"1 ,,",~,~L-..; г>.,cc,~~" ~
FoOO-:
'1 с".~':~:~"'ш:\:~=м:оо:::,--------_"':='---==-
cpen Са гсе l
с :ITrrpV>t,-п- , CS t.
fme S t:J1JJS
.. G] Dof.ut .ЩJХ ~.,.. 0!i . D1 . 2OCIЗ 16 :3'5
.. ~ c.,r.ut .~ ~I<" 29.0 3 .= 12:405 07.D1. 20ct3 10 11
"Gj Р"9"2 .Щ'Х ~J<" 0!i . D1 . 20С1З 1 26
"~ P"9"2 .• "P ~I<" 05 . 01 . 20С1З 22 :03
!a.,.",mn"o;J Ltdlq 07. D1 . 2OCIЗ 10 : 11
St<ltus :
(ОРУ I'torn Scuce wю ,т со Rerno:e wю ет ~ IhshOO , coгcp~ а! QJ ,QI, zcaз Ш : 51 5J , у""" L"" ,, -
~~=============-~~-~
• ~3апустите броузер ком пьютера, за грузите страницу по
умолчанию (Default.aspx) через URL и п ощелкайте несколько раз на
кнопке Refresh, затем то же самое сделайте дл я страницы
Page2.aspx. По сле этого также через URL вызовите виртуальную
страничу Trace.axd, на которой и будет собрана вся трасс ир овка
последних запросов
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Application Тгасе
[ clea r cu rren t tra ce ]
Physical Directory:c: \inetpub\w wwroot\
Секция Описание
Reqllest
Содерж ит общую инф:Jрмацию о запросе ст р аницы
Details
Содержит сведения о пр оизводи тельно сти , связанные с
событиями жизненного цикла страницы. В столбце From
First(s) находится абсолютное время , отсчитываемое с
Тгасе
l' • момента получения запроса страницы (нулевое время) до
lпюпnatюп
начала обработки очередного собы тия. В столбце From
Last(s) nоказана дли тельн ость обработки nредыдщегоo
события.
Session
Содержит все n ереме нны е сеанса и их знач ения
State
Appocatio n
Содержит все n ереме нные nриложения и их состояния
S tate
Reqllest
Отображает cnисок всех файлов cookie (куки), полученных
Cookies
сервером в составе запроса
Collection
Rеsропsе
Отображает список всех файлов cookie, переданных
Cookies
броузеру в составе отклика
Collection
Headers Отображает список НТГР-заголовков, полученных сервером
Collection с запросом
Rеsропsе
Отображает cnисок НТГР-заголовков, переданных броузеру
Headers
в составе ОТЮlИка
Collection
Fопn Содержит пары key=value элементов ф:Jрмы, отправленных
Collection броузером с обратной отсылкой PostВack
Q llerystring
С 11_·
оШ:"сtюп
Содержит пары key=value, ВЮlюченные в строки запроса
Server
Отображает состояние всех серверных nеременных
Variab)es
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Выводы
"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Web-формы
<html>
<head >
< title>Посылка сообщений </titlе >
<meta content=''text!html; chaгset=windows-1251" http-еquiv="Сопtепt-Туре
</head >
<body>
< fопn method="get" паmе="fо пnl ''>
<р>
Ваше сообщение:
<input id="rпеssаgе" name="message" type="text" value='Hello, world!'':
<br>
Кто посылает:
<input id="autor" name="autor" type=''text'' vаluе="СНЕТКОВ В.М.">
</p>
<р>
• О Петров Петр
• О Иванов Иван
Submit
WеЬFОПIl5 . htm?
message= НеПо%2С +World%21&autor=C НЕТКО В + В.М.&О К =Submit
"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
J.. ..
butlon
t J!; Cut -
'tI Сору
lfI Paste
Paste Altегn.зtе
Х Delete
Style ...
RlIl As Serveг Contrd
I I
I!З. View in Browser
Edrt Imag€
Show Smart Tag
rE Rе1Теsh
~ Propeгbes
Если мы разрабаты ваем актив н ую стра ниц у "с нуля", то лучше сразу
п риме н ять серверные элементы управления, где уже автоматически
встро е н дескр ип тор runa t=" s е rve r " . и более того , если его уб р ать ,
это БУдет счи таться Оl.Ш1бкоЙ. Дескрипторы, представляющие серверные
элемен ты , начинаются с метки asp : Т ип элемента , далее следуют
111 "
Зе",ф 01 1,...,
Te"l'~tEs",
Loca~ m : "lcC
"O oC
,,=.Cm
---i!" Гсlс--;\,,"";;;i\w;;"';ы;о,•;-,----::========---:i!~.. ВrOWS8",
L~: IC\C
ruC,C"C,,------i!;]
С:\ Tmp\WebSi!e1 \
Ц! App_Data
(>реп Witi1
D V>e., DeskJner
Vi€w Component Designer
ВUikJ page
JIi Cu!
Сору
Wete
< !DQ CТYPE html PUBLIC "- /IWЗС /IDТD ХНТМL 1.0 Tгans [ionaVIEI
<script nmat="server''>
</script>
Создание обработчиков
}
</script>
</body>
<lhtml>
Default.aspx*
liJ Обновить
}
</script>
"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<div>
<asp:Label ID='1.abel1 " nmat="server''> </asp:Label>
<asp:C heckBox ID="C heckBoxl " runat="server"
Text="Red" I>< br 1>
Имя :
< a s p :Te xtВox ID =' TextВo x l " runat="se rve r ''>C HeTКOB </asp:TeX1
IE О ,ЬЬа8С Тоо Ь
IE Dob.щ hJ
1jJ·· Dev O:e Tools
г snap р.хеl-Ьаээd pos ~ms in:J s~es to tffi b l ~"."'" SE(t ..... :
ш нт м. Оез чer
, Ю-izооtal spac ..... :
rs-- pixels
Г pixels
о< Car>:EI I
I
CheckBoxl System.Web.UI,WebCOIlU'"
Disposed
Init
Load
PreRender
Unюad
"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
~! lюdу )-
Detщ
~ •• lisbfy
мake Sз т е Эzе
•
Н<xizalt3 Spach]
•
УегЬ:aI Spach]
•
,,&
•
Ле гко замети ть , что эти действия п ривели к добавлению в дескрип тор
<d i v> атрибуга в н угреннего стиля
</div>
Это наглядный прим е р того, чт о зная где и что подкруги ть, можно
п одкручивать и н а прямую. НТМL-дескрипторы такие "одноклеточные",
что все их пов едение ' 'написано у них на лбу". Но чтобы опуститься до
их уровня , нам нужно попот еть при подъеме в гору Серверные
элементы из вкладки Standard на много сложнее, зато несравненно
функциональней и полностью подцерживают парадигму объект НО
ориентированного программирования. Их настр ойка большей частью
выполняется через код С# и п анель Properties.
Полностью код страницы в режиме Source для нашего при мера будет
таким
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<script nmat="server''>
protected void Page_Load(object sender, EventArgs е)
{
Label1.Text = 'Текущее время:"
+ DateTnne.Now.ToLongТuneStringO;
Label2.Text = TextВoxl . Text + "!!!";
}
"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
06f108ИТЬ
скрытых полях.
пользователем.
</script>
Ах!, какие умные эти серверные элементы: сами сеют - сами жнyr
- сами песенки поют!!!
• ~ыделите элемент
Labe 1 1 и установите его свойство
EnableViewSta t e в состояние False (по умолчанию оно
установлено в значение T r ue ). Немедленно в дескрипторе
элемента появится атрибyr EnableV i ewSta te= " Fal зе "
"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
вида. Про несе рверные (нет атрибyrа runa t == " se r ver " ) HTML-
эл е менты такого не скажешь . Web - элементы с ВЮliЩки Standard - все
серверные .
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
!
Ин и цм али.э аЦИ>l
3 IWДOl 1lOJl;.;wвоп еля
!
Про ве pt:a
4 ДОСТQl3 еpt1 ост и
!
ОбрабОТl:а
5 соБЫ ТИЙ
6 I 7
... , \. Броуз е р П ОЛУ"'OIет OТ~
8 Очоост <о
"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
<script nmat="server''>
protected void Page_Load(object sender, ЕveпtAгgs е)
(
Label1.Text = 'Текущее время:"
+ DаtеТnne.Nоw.ТоLопgТnneStгiпgО;
Label2.Text = TextВoxl . Text + "!!!";
"
В . М. СН"""'Б Про'ра....МuроваНuе 110 ASP.NET
состояни я флажка.
Обработка событий
1. Page . Ini t
2. Page . Load
з. Te xt Bo x . Te x tChanged
4. Button . Cl i c k
S. Page . PreRende r
б. Page . Unload
ЭТО последняя оста новка в ж изн е нном ЦИ ЮJе страницы. И стори чески
сложилось та к, что событие Page . PreRender обозначает посл еднее
действие п еред пр еобразова ни ем страницы в НТМL.
Очистка
•
l/ШIiIIIII
D
м." ,... Р"9"
[!j]
_ с_
Ccn'ro l
00
КТf.1.. ""9"
!i
Web S• ..,~e
~
С",,,
~
stj i< SI"e"t
CiiJ
C~,
.
Fi:"
ij
SQ..Doi'->Ь=
1m
Dазset -~, ~
5Ite М"!)
1J]r"
с
M:N e I'Joo
~
\'В5C r "" F(e
lf.jJ
,-,
~
.J5CfjX " "
Ib"diof ' ..m
~
rв::;"
I д form for Wob ц" ь""",
-"'" ~ ф1 jjJ
~W I p~ "w , ,,,p,
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sуstеm.WеЬ.U I .WеЬСопtrоls.WеЬРаrts;
using System.Web.UI.HtmlControls;
if (Page.lsPostBack)
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
{
IblInfo.Text += "< Ь > Эта страница запрашивается не впеРВЫI
}
}
Butlon
8utton
сохр аняются.
Ка ждый раз, когда страница создается в ответ на НТГР -за про с , система
AS P.NET инспектирует фай л .aspx. Для каждого найденного
дескри птора элемен та управления она создает и настраивает объект
элемента управления, а затем доба вляет этот объект к странице как ее
дочерний элеме н т управления . Сс ы л ки на все дочерние элеме н ты
страницы размещаются в коллекции Раgе.Сопtrоls.
Код разметки для получен ной страницы долже н выглядеть при мер н о
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
так
<html xm1пs="httр:llwww.wЗ.огgl1999/xhtml">
<head nmat="server">
<title> Дерево элементов ynравления </titlе>
</head>
<body>
<р>
<р 1>
<asp:Labe! ID=''Label1 '' runat="server" Text=''Labe!''>Name:</asp:La
<aspTextBox ID='TextBoxl" runat="server" Wklth="195px''> </asp:l
</asp:Pane!>
< аsр:Вuttоп ID="Button4" runat="server" Text="Button4" 1>
</div>
</foпn>
<р>
Bu1lon3
Name: L -_ _ _ _ _- '
Bu11on4
Это статический т ек ст 2
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
Response.Write("<hr 1>');
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
}
}
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ВuttопЗ
Name: LI_ _ _ _ _ _ __
Bu11on4
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Пример:
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Dуn.зmicВutton.3SPХ.СS DvnamicButton,aspx*
• Reset Text
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
результат
Resel Тю:l .
,ОС
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
&пЬsр;
< аsр:Вuttоп ID::::''Вuttоп1 '' ruпаt::::"sеrvег" Text::::''Reset Text" I>< br 1>
<ш 1>
< аsр:Вuttоп ID::::''Вuttоп2 '' ruпаt::::"sеrvег" Text::::"Create Вuttоп" 1>
&пЬsр;&пЬsр;
< аsр:Вuttоп ID::::''ВuttопЗ '' ruпаt::::"sеrvег" Теxt::::''Rепюvе Вuttоп" ОпСliсk=
</div>
</form>
<!body>
<lhtml>
Листинг
DупаmiсВuttоп.аsрх
Дескрипторная часть страницы
• файле
usiпg System;
usiпg System.Data;
usiпg Systеm. Со пfigша tiоп;
usiпg System.Collections;
usiпg System. Web;
usiпg System. Web.Security;
usiпg System.Web.UI;
usiпg System. WеЬ.UI.WеЬСопtгоls;
usiпg System. Web. UI. WеЬСопtгоls. WebParts;
usiпg System. WеЬ.UI.НtmlСопtrоls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
DynamicButton.aspx.cs
DynamicButton.aspx
Класс Page
1. Внугренние объекты
2. Рабочие свойства
з. Специфические страничные свойства
'"
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Объект Request
Свойство Порождак
ApplicationPath string
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
AnonymousID string
Fi l ePa t h string
Curren t ExecutionFilePathstring
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
IsAuthenticated bool
IsSecureConnec ti on bool
IsLocal bool
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Ur l Sys t em . Uri
UserAgent string
UserHostAddress string
UserHostNa me string
UserLanguages string
Объект Response
'"
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
Ex pires i nt
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
IsClientConnec t ed boo l
Write(char) ;
Write(char [ ] ,
int , int) i
Write(objec t )
Write(string)
BinaryWrite(byte[
] )
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
Redirect(string) ;
Redirect(string ,
bool)
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Прим е р :
Объект Server
Представляет
ком п ьютера , f
за п ускается ст
с ц елью его и /
для остальной
Создает эюем
объекта , о п ре/
п ро гр амм н ым
CreateObject(string) i
и дентификато
CreateObject(System .T ype) Ис п ользуется
совмест ИМОСl
yn рощает взау
СОМ-объекта
И звлекает объ
п ослед н е го не
н улевую ССЫЛI
И СЮJюче ни я н
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
ИСЮJюч е ния н
GetLas t E r ro r ()
Используется
событий при л
пров еряющеп
ситуации.
Осуществляет
кодирование (
допустимыми
Htm lEncode(st r ing) ;
которые н е БYi
Htm lEncode(st r ing , воспринимап
ж ес т к и й Пf
&пЬзр )
кириллицу, %,
Url Decode(s t ring) ;
Раскодирует с
Ur l Decode(s t ring ,
символов uю
System .I O . Te x tWrite r )
Выполняет те
что и UrlEnc
работает с ба~
Ur l TokenEncode(byte[ ])
массивом, кот
Base64
Выполняет те
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
работает с ба~
Ur l TokenDecode(s t ring)
массивом, кот
содержит дaНl
Base64
Возвращает фJ
файл , соответ,
MapPath(string) определенноrv
виртуальному
на Web-сервеI
Передает ист
другой Web-cl
текущем прил
метод по хож f
Transfer(string) ;
Response . 1
Transfer(string , boo l ) ; но работает бl
н ельзя примеl
ASP.NET (нап
или ASP)
Например:
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Например:
// Открытие файла
StreamReader reader = new StreamReader(physicaIPath);
// Что -то делаем
reader.CloseO;
Объект User
пол нофункциональными .
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
011 Cut
I~ сору
~ Paste
Р aste Alternate
'х Delete
Style ...
Rlfl As Server ContIoI
I I
V~w code
V~w Component Dбignег
Edit Image
liJ Re~esh
i;;\ Properties
Серверные НТМL-дескрипторы
m
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
r ------ - -- ------- \
Пространство имен System.Web.UI.HtmIControls
I I
rttmlCQntrQI
f--- I
I
I Htmll npuК: Q n trQ I
I I rtt mICQnt..inerCfJ ntгQ I
I --1 ~m l l mage II
Н ~ ГГ1 ~ прutВutroп
I Н НVnlAnc t"юг
I --1 HVnllink
II
н HtmllnputSubmit
I Н HtmlButton
I --1 Н tmI Ме1З
I I
н HtmllnputRaset
I Н НtmI FQПТ1
I --1 H tmrТi ll e
I i I
Н ~m llnputC~сkБQХ I Н H(mlSe-lect
I
Н Нtm llп put FПе
I Н Htmrтable
I
Н Htm ~n ~ idde n
I Н Нtmrfa bIeCel1
I
Н Himllnputlmage
I Н Htm rтabkoR ow
I
Html l npufТext
I Ч Html(ienericContro l нtm lHe<! d II
I
I нt m n n putPa ssword I I
)
" --------
Пока за нны е на р и сунке массы
-----------
и м еют следую ще е соо тветст в и е с
'"
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
В,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
еж
Doпе I n 1J"anet
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Динамическая
таблица
Local in1J"anet
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
System.Web.UI.HtmlControls.Htmllnputlmage
System.Web.UI.HtmlControls.HtmrrextArea
System.Web.UI.HtmlControls.HtmllnputCheckBox
ServerChange System.Web.UI.HtmlControls.HtmllnputHidden
System.Web.UI.HtmlControls.HtmllnputRadioButton
System.Web.UI.HtmlControls.HtmllnputText
System.Web.UI.HtmlControls.HtmllnputPassword
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
ЕvепtsСопtrоl.аsрх
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
<se lect id=''List1 '' runat="server" style=''width: 202 р х" multiple size="З"
оnsеrvегсhапgе=''Listl_SеrveгС haпgе''>
< iпрut id='Textboxl " runat="server" type=''text'' оnsеrvегсhапgе='ТехtЬохl_Sе J
< iпрut id="C hec kboxl " runat="server" type="checkbox" onserverchange='Textb
< iпрut id="Submitl" nшat="sеrvег" type="submit" value="submit"
onserverclick="Submit l ServerClick" 1>
usiпg System;
usiпg System.Data;
usiпg Sуstеm.Сопfigurаtiоп;
usiпg Sуstеm.СоlIесtiо пs;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using System.Web;
using Sуstеm.WеЬ.Sесшitу;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
}
}
EventsControl.aspx.cs
• Г;;:;=Запустите страни ц у на выполнение и получите примерн о
такой результат
"г' i
-
,
Web-элементы управления
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
I Sушm Object I
I S~te m Web.UI, ContJol I
- - - - -- -
Пространство имен
-------- -
System.Web.UI.WebControls
- ,
I
~t<:'.1ntfQl
I
I I
Н 6цасп
I Н L i te Г1il I
I ваsе~ШВСun ОСQП1ГQ I
Н ctJo<;k6Qx
I Н РI~ еНQIO-е'
I I D;lt<JE\Quno:.:lC<>ntrol I
Lr Rэdi: >6u\toп I Н Сэ l$nd"г
I -1 AdRoWoI
I
Н H~perlink
I -1 'т' I -1 СQmрсsiteDэmВСUnclCoП1rоll
Н I mэge
I -1 VЭhdati опSu mmэ ry I Н Doe1ai~V i ew
I
-1 I m~ge6...tton I I 6-;J$еv", ]id;Ш>l
I Н FQIfТIV~w
I
--1 Image"-lap I IВ<llseCоmрз rеV.аlkjз lo г I Н Qrl dVlew
I
Н l.oI" ,
I Ч- C()mj);'lteVi! lid;'\kJt I Н LlstControl
I
Н Llnt:BullOn
I Н СU зt)m\lll l l~kJ.
I Н Ch~ k.ВC~Llst
I
Н F ane l
I Н RangeVa lldator
I Н DIOpDawnL Is1
I
Н т.".
I -1 Reguta rExprer;,sl() nValidaoor I Н LlslВo~
I
Н TableC e~
I --l RequlredFieldValidator I --1 RadloBullOnL ls1
I
Ч-Т3tjенеS(1е tCеl l l --1 Bulete(j,..Ist
I
Н ТэЬ\оеRow
I -i Н ierэ гс hiсэ lDэtэВОu ndC ()П1rol I
Н Text60x
I --1 Menu
I
Н TreeView I )
I
---------------- - - - - -- - -
'"
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
ynравления
компьютере ЮIиента
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
методы
Управление стилем
pnlBorderStyle = BorderStyle.Dashed;
'"
.--------.
В.М. С""",,,в
I I
Про,раммupoвtJNШ' 110 ASP. N ET
I I
I I
I I
I I
.. _------_ ..
I I
Управление цветом
Для задания значений свойств цвета элеме н тов управления, таких как
BackColor , BorderColor , Fo r eColor , используется структура
System . Drawing . Colo r с п редопределенными цветами и ее
методы , или статические методы класса
System . Drawing . Colo r Translator . Для сокращенного
использован ия на стра ниц е такого арсенала н ужно импортировать в
usiпg System.Drawing;
или п рименять полное имя кnacca или структуры при обраще нии к их
компонентам .
usiпg System;
usiпg System. Web.UI. WebControls;
usiпg System.Drawing;
Листинг
PropertiesControll.aspx.cs
Управление цветом
• файле
: lM3;WebSite lrrrr т
[ Button2 '
Оопе Local iп1Тапеt
Управление шрифтами
llsiпg System;
llsiпg System. Web.UI.WebControls;
llsiпg System.Drawing;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Настройка цвета
int alpha = 255;
int red = О, green = 255, blue:::: О;
Button2 .BackColor:= Color.FromArgb(alpha, red, grееп, blue);
// Исп ользуем ст р уктуру Sуs tеm.WеЬ.U I .WеЬСопtrоls.FопtUnk
// уста н овки отн осительного размера шрифга
Button2 .Fo nt.Size:::: FontUnit.Smaller;
// Настройка цвета
ВuttоnЗ . ВасkСоlог:::: СоloгТгаnsLз tог. FгоmНtm1(''#ООООFF');
ВuttоnЗ . FогеСоЮг:::: Co lorTranslator.FromНtm1(''white');
// Исп ользуем ст р уктуру Sуs tеm.WеЬ.U I .WеЬСопtrоls.FопtUnk
// уста н овки абсолютного размера шрифга в пунктах
ВuttоnЗ . Fо пt.Size:::: FontUnit.Point(16);
Листинг
РrореrtiеsСопtrоl1.аsрх.сs
Управление шрифтом
• файле
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Button2
Оопе Local iп1Т.:nеt
< Ьг 1>
< аsр:Вuttоп ID= "Button2 " runat= "server" Text="CTepeTb студента " I
</asp:Pane!>
</div>
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</form>
<!body>
<lhtml>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<р 1>
<ш 1>
< р 1>
<h2>
Элеме н т ы управления, <br1>
генерирующие событие < Ьг 1>
C hanged
<1h2>
< р 1>
<asp:TextBox ID='TextBoxl" runat="server" AutoPostBack='True"
ОпТехtСhaпgеd="СtгlСhaпgеd ''> Привет BceM!!! </asp:TextBox>
< р 1>
<asp:CheckBox ID="CheckBoxl " runat="server" A utoPo stВac k ='True'
OnCheckedChanged="CtrlChanged" />
< р 1>
<asp:RadioButton ID=''RadioButtonl '' runat="server"
AutoP ostBack='True" Checked='True"
GroupName=''radioGroup'' OnCheckedChanged="CtrlChanged" 1>
<asp :RadioButton ID=''Rаd iоВuttоп2 '' runat="server"
AutoPostBack='True" GгоuрNаше=''rаdiоGгоuр''
OnCheckedChanged="CtrlChanged" 1>
</div>
</form>
<lbody>
</html>
СhесkеdСhапgеd.аsрх
using System;
using Systеш.D а tа;
using Systеm. С опfigша tiоп;
using System. Collections;
using System.Web ;
using System. Web.Security;
using Systеш. Web.UI;
using System. Web.UI.WebControls;
using System. Web. UI. WebControls. WebParts;
using System. Web. UI. HtmlContro ls;
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
СШlСОК событий
CheckBox1_ Changed
RаdlOВuttоп2 _ Сhапgеd
RаdiоВuttоп 1_Сh"пgеd
CheckBox1 Changed
Элементы управлеlПIЯ,
генерирующие событие
Changed
I Привет всем!!!
r. r
Оonе Local iп1Т.:nеt
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
С п исковые Web-элементы
Выпадающий спи(
заполненный колл
объектов
<asp : L i stlten
DropDownList <asp : DropDownList>
НТМLон
трансqюрмируется
дескри п тор <selE
атрибугом size=
ОКНО списка, запо.
коллекцией объект
<asp : L i stlten
НТМLоно
ListBox <asp :Li stBOx> трансqюрмируется
дескри п тор <selE
атрибугом size=
Х - количество ви )
элеме н тов
Его элементы в Н1
трансqюрмируютс
CheckBoxList <asp :C heckBoxList> флажки, выровнен
таблице с одним и
н есколькими стол{
То же , что и
<asp : CheckBo}
RadioBu t tonLis t <азр : RadioBu t tonLi s t> но элементы
трансqюрмируютс
радиокнопки
Статический
'"
в.м. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
маркированный и.
нумерованный СПl
НТМLон
трансqюрмируется
DataSource ,
DataMember , Использую тся для отображения данны х
DataTextField ,
и з базы данных
DataValueF ie ld,
DataTextFormatString
,СО
В.М. С""",,,в
Llstltem Соllеctюn
[1e mbers:
:
Editor
i:СЩ;D~'В'• • • • • • • ~
=== Про,раммupoвtJNШ' 110 ASP.NET
.1J.RI
~
._ ","ИЯ2
ОК CCIГJo::el
usiпg System;
usiпg System.Data;
usiпg Sуstеm.Сопfigurаtiоп;
usiпg System.Collections;
usiпg System.Web;
usiпg System.Web.Security;
usiпg System.Web.UI;
usiпg Sуstеm.WеЬ.U I .WеЬСопtrоls;
usiпg Sуstеm.WеЬ.U I .WеЬСопtrоls.Wе ЬРаrts ;
usiпg System.Web.UI.HtmlControls;
{
ListВохl.ltеП15.Аdd("Опция" + i То5triпgО);
DгорDоwnList1.ltеms.Аdd("Опция" + i То5triпg());
С hесkВоxLis tl.1tеms.Аdd("Опция " + i То5 tгiпg()) ;
RаdioВuttопListl.1tеms.Аdd(''Опция'' + i То5triпg());
}
}
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
1 :~ ~::::: QОПЦИf1
31 Q ОПЦИf1 4
5
2
1
Этот элемент ynравления генерирует либо НТМL -список <и 1 > , либо
<01> . Набор элементов списка задается чере з свойство-коллекцию
1te ms . Им е ются и другие свойства , приведенные в таблице.
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Выбрано свойство:
<asp:Labe! ID=''Labe!l '' ruпаt="sеrvег' '></аsр:LаЬе!>
< р />
< аsр:ВullеtеdList ID =''Вullеtеd Listl '' nшat="sеrvег"
BulletS tyle= "N шnЬегеd" DisрlaуМоdе=''LiпkВuttоп''
ОпСliсk= ' 'ВullеtеdListl Click''>
<asp :ListItem> N otSet</asp :ListItem>
<asp :ListItem> N umbered </asp:ListItem>
<asp :ListItem> Lower Alpha</asp :ListItem>
< asp :ListI tem> U р регAlp ha </asp :ListI tem>
<asp :ListItem> LowerRoman</asp :ListItem>
< asp :ListI tem> U р perRo man</asp :ListI tem>
<asp :ListItem> Disc </asp:Listltem>
< asp :ListI tem> С ircle </asp :Listl tem>
< asp :ListI tem> 5 quare</asp :Listl tem>
< asp :ListI tem> С ustomImage </asp :Listl tem>
</asp:BulletedList>
</div>
</form>
</body>
</html>
Задав ДЛЯ списка атрибуг Dis play Mode= " LinkButton ", мы т ем
самым ВЮJючили на ЮJиенте постинг ДЛЯ каждого пункта с пи ска .
,ее
П""'?'W"'~""'"" ASP.NET
1. NotSet
2. NшnЬегеd
З. LowerA1IJha
4. UpperA1pha
5. LowerRoтan
6. UIJIJerR&тan
7. Disc
- -
8. Circ1e
9. Square
10. Custoтlтage
ОДН ОЙ и з важных задач НТМL~ дескр ип тора < f or m> является сбор и
передача данных у сво и х элементов управления. Часто Web-страницы
запрашивают у п ользователя какую-либо информацию, за т ем сохра н яют
ее во вспомо гател ьной базе да нн ых. Всегда нужно пр оверять введен н ую
пользователем информацию на предмет СQЦержан ия ошибок или
злонамеренного кода , которые мо гуг вызвать сбой в р аботе саЙта .
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
да нных, а именно
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
регулярному выражению
Элемент RequiredFieldValidator
,СО
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
< Ьг />
<asp :TextBox ID='TextBox2 " гuпа t="sеrvег">< /аsр :TextBox>
<asp:ReqlliredFieklValidato r ID='Val2" nmat="server"
Co ntrofГo Valid a te='TextВox2" Width= ''2 1 7рх''
Техt= "З апол ни те п оле TextBox2" />
Есл и мы хотим вы дать сообще ния о всех ошибка х сраз у, то это делается
ч е рез элемент ValidationSumma r y , а предупреждение от текущего
Controrro Validate= 'TextBoxl " Техt="З аполните поле TextВoxl " Dis!=
!Оynашic!
< Ьг />
Имя:
<asp :TextBox ID='TextBox2 " runat="server''> </asp :TextBox>
<asp:ReqlliredFiek:lValidator ID='Val2" nшat= "sе rvег "
ControrroValidate='TextBox2" Техt="З аполните поле TextВox2" />
!Static!
< Ьг />
Отчество:
<asp :TextBox ID=' ТехtВохЗ " runat="server''> </asp :TextBox>
<asp:ReqlliredFieklValidator ID ='Vа lЗ" nшat="sе rvег"
Controrro Vаlidаtе= ' ТеxtВохЗ " Техt="З аполните поле ТехtВохЗ " Dis!=
!None!
< Ь г />
<aspButton ID="Buttonl " runat="server" Теxt='Заре гистрироваться" />
</form>
</body>
</html>
1~i)~Dтe~======:::::'--------ГГГ~LОС3iltrа~t
Если исследовать поведение страницы, то можно сделать несколько
важных выводов:
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
m
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
--~.;......;...
Internet Options ? Х
о о
Trusted sites Restricted
sites
Local intranet
This соnе conts.ins sll Web sites thst ше
Sitез ..
оп your org ~n iz~tion's intr~net.
Custom
Custom sеttingз.
- То chsnge the зеttingз с dick OJstom Level ~
- То use the recommended settings, click DefOO!l Level
ОК OTMeH~ Применить
Securitv Settings
Settings:
о Disable
o Enable
О Prompt
~ Userdata pers isterce
О DisablB
, o ЕnaЫв
S[фt~
~ A[ti\le s[ript~
О Disable
o
u
Enable
О Prompt
~ Allow paste operations \lia scфt
О Disable
o ЕnaЫе
О Promot
•
, "езе, cu,tom settlngs
"ese' 10 I M8dum-lоw _ R888
------"1 1
СЗхвl
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<script nmat="server''>
protected void ЬtпRеgistег_Сlk:k(оЬjесt serкler, EventArgs е)
(
ЩР age.ls Valid)
{
11 Все введено, можно реrnстрировать
Labell.Text = "Вы зареrnст рир ованы";
Label1.ForeColor = Systеm.Dгаwiпg.со!ог.whitе;
Label1.BackColor = Systеm.Dгаwiпg.Со lor. Gгееп;
}
}
</script>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Листинг Пример ИСПОЛЬ90ваНИR свойства Page.IsValid в файле
IsValidTest.aspx
<script nшat="sеrvег''>
protected void Buttonl_Ctick(object sender, EventArgs е)
(
if ('Page.lsValid)
(
11 С р абатыв ает при ОТЮlюченной подцержке JavaScript
11 в броузере. Инач е JavaScript на юш е н те
11 н е разрешает постинг. пока есть неправильный выбор
Labell .Text = "Э та опция запрещена!";
)
e~e
(
Label1 .Text = "Разр еше нный выбор!";
)
}
</script>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
в последн ем при мере мы д олжны понима ть, что при ВЮJюч е нной н а
ЮJи е нте поддержке JavaScript nр едУЛ реж.цение об ошибке никогда не
будет выдано кодом страницы , п отому что п остинг броузером будет
заб локирован , п ока польз овател ь не сдел ает пр авильный выбор.
Обратите внимание н а н астройки в ал uдаmорй. О н не сможет выдать
те кстово е nр едynреж.це ние пользователю , по тому что мы сделали его
Элемент CompareValidator
Свойство Описание
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
принимать з начения :
установленной константе
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Взаимоисключающие свойств а,
Control ToCompa re,
определяющи е либо эталонное поле
Va lue ToCompare
сравнения, л и бо ко н стан ту
<script nmat="server''>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
runat="selVer" Теxt="Отправить
< аsр:Вuttоп ID=''Вuttопl '' заказ"
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Элемент RangeValidator
<script nmat="server''>
</head >
<body>
< fопn id="forml " runat="server''>
<div>
<h2 >
Товар ' 'Ро га и копы та "< Ih2 >
Имеется в наличии:
<aspTextBox ID='TextBoxl " runat="server" EnabIed=''False '' Text= "25 '
Сколько хоти те заказать:
<aspTextBox ID='TextBox2 " runat="server" I><br 1>
.1J~
..•
T...-rpl ..,... Гf! ;:;:
~ ~ ~
АЧ' r.ET \', 00 ASP J-ET W3!J ж-sma l Vloo
Sib SOfYEO Si'" stoc"" K~
•
l/ШIiIIIII
D
м.",..- Р"9"
[!j]
_ с_
ccrn-o l
00
КТf.1.. ""9"
!i
Web S• ..,~e
~
С ",,,
~
stj l< SCe" t
CiiJ
C~,
.
Fi:"
ij
SQ.- о..:..ь=
1m
Dазset -~, ~
5Ite М"!)
1J]r"
с
M:N eVIOO
~
\'В5C r "" F(e
lf.jJ
,-,
~
J5CfjX ""
I-I.rd e.. ' ..m
~W I Def<OJ lt<bpx
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
..n DeЬ uщ iпg Яlоu (J ье drsabled in Ihe W8b,crnf1g Ш:о before deplщilg the
W8b site to а prod..ctial ооугrnmепt,
< сопfigшаtiоп>
<system.web >
<trace enabled= ''true''/>
</system. web>
</соnfigшаtiоп>
Тгасе Iпfопrntiоп
Ргот
Category Message Ргоm First(s)
Last(s)
aspx.page Beg i n Pr eln i t
aspx.page End Prelni t 0,01754301175149360,017543
aspx.page Beg i n In i t 0,020 14781208226190,002605
aspx.page End Ini t 0,03765702065485980,017509
aspx.page Beg i n I nitComplete 0,0381149000780825 0,000458
aspx.page End In i t Complete 0,04003078603565540,001916
aspx.page Beg i n PreLoad 0,04203327517882860,002002
aspx.page End PreLoad 0,04339266582764010,001359
aspx.page Beg i n Load 0,0438189 76992886 0,000426
aspx.page End Load 0,04991751744984350,006099
aspx.page Beg i n LoadComplete 0,0503580762359462 0,000441
,ее
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</div>
</fonn>
</body>
<lhtml>
using System;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Р'''''-'''-
Р ... _""
Р . .. _",,,• ..,
Р. .. _,-
POI"_"""" _
Стра ниц у без отл а дки мож но запустить напрямую , вызвав броузер
че р ез контекстное меню разметочной части стра ницы командой VIew in
Browser, или выполнив командУ оболочки DebuglStart Without Debugging
(выполнить без ВЮlючения отл а дки). В любом случае с р еда исполнения
AS P.NET п ерекомпил и рует страницу (если был и по след ни е изменения
в исходном коде по сравнению с DLL) и выполнит ее , направив
сгенерированный HTML-КОd броузеру.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg System;
usiпg System.Data;
usiпg Systеm. Со пfigша tiоп;
usiпg System. Collections;
usiпg System. Web;
usiпg System.Web .Security;
usiпg System. Web.UI;
usiпg System. Web. UI. WebControls;
usiпg System.Web.UI.WebControls. WebParts;
usiпg System. Web.UI.HtmlControls;
fо nnl .Сопtrоls.Аdd(lbll );
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
10nnl.Сопtrоls.Аdd(ВR);
10 nnl. С о пtrо Is.Add(1b 12);
10nnl.Сопtrоls.Аdd(ВR);
fo пnl. С о пtrо Is.Add( textВo х);
10nnl.Сопtrоls.Аdd(ВR);
10 nnl. С о пtrо Is.Add(btn);
textВox.FocusO;
if (! this . I sPostВack)
(
11 Настройки при первом запросе,
11 далее сохраняемые в ViewState
Ibl1.Text:= ''Label'';
Ibl1.тооrпр = "Э то текстовая меткаl";
Ib12.Text:= ''Labe2'';
Ib12.тооrпр = "Э то текстовая метка2";
textВox.Style.Value := "color: red; foпt-stуlе: italic";
tехtВох.тооrпр = 'Это текстовое поле";
Ьtп.Техt = 'К нопка ";
Ьtп.ТооШр:= 'Э то кнопка Submit";
)
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ObJect Browser
Browse: .NEТ Framework ... ,.. I
System.WebUITempo.teConb"d •
EJ ..·'I$ System.WebUITempo.teConb"d
Base Types
Derived Types
",'1$ Page
8 '1$ UserCoob"ol
уп р авления
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
1'100 Fe< m
D
Мао"" Р"'9" •
l1li
1!1
н тм.. Р"'9" 1'100
~
_Y O: ~
~
C~,
~
sty k> ShGot
с <ы
~ iЭ
"оо
~
хм.. Fi" хи..
tm Schema
li1
Text Fi"
!IJI
Pescиce Fi "
IJ
SQ.. Database
"W1o:atL " Crnfg.xati",
tm -~, ~ шf· ~ ~ ~
DataSet
~ff
Si l9~ ~ i "Web
Fe<m
VВScr"t Fi "
"-' JScr " t Fi"
Посмотрите , что создал мастер. Файл .ascx содерж ит только одну строку
директивы
страницу.
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
и ли таким
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'!i ТССТ ~лсмеltТа user control Мicтosofl Intcrnct [~plorcr ::::::::=- ____~~-ID I ~
----
•
Тестовая страница User Control
ВР!;'J\lЯ о.:U~Д<lНИЯ: МЩП 20071 ~ В(!;' IIp<lB<I j<lЩИЩ!;'НЫ
управления
Обработка событий
<asp:LinkButton ID=''lnkTune'' runat="server" ОпС liс k =' 'lnkТпnе_С liс k '' 1>
т,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
17:32:39
модификатор.....Доступа ти п имя_свойства
(
get
(
11 код аксессо р а чт е ния поля
",
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
гешm поле;
}
set
{
11 код акс есс ор а записи поля
поле := value;
}
}
П усть, н а при мер, пер еме нной x F i eld целого типа тр ебуетс я
обеспечить ко нтролир ую щий доступ с помощью свойства с и мен ем х,
которому в пр о грамме можно при св аивать тол ько н еотр и ц ат ель ны е
class М УС Iass
{
public MyClassO
{
xField = О;
}
Щуа!ие >= О)
xField = value;
}
}
}
Добавление свойств
",
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
22:06:57
Здесь создаются два экзем п ляра элеме нта ynравления Ti meD i splay,
первый из которых отображает дату в ф:Jрмате п о умолчанию , а друго й -
в задан ном ф:Jрмате.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
",
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
23:25:40
23:25:40
I iп1Тю еt ~
AJ
",
C:\ ... \WebSite4\
~ Build Web ~te
PubIish Web ~te
~ CUt
Сору
Paste
§I Property Pages
",
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
в .1"=-- - - - - - - - - '1
Add Existing Item".
R e~esh F~der
Cut
Сору
Paste
'Х Delete
Rеn.зmе
,,,
В.М. СН"",,,В Про,раммupoвtJNШ' NQ ASP.NET
.1J~
ri! о:::
•
T""l""»>
~ !;]J ..;
[!jJ ~
IШII Тех! f ile D<Ot1oS,t
using System;
using System. Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebContro ls;
using System.Web.UI.WebContro ls.WebParts;
using System.Web.UI.HtmJControls;
/// <summary>
/// Вспомогательный масс LinkTableItem
/// </summary>
public class LinkTabIeI tem
{
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
// Конструктор по умолчанию
риыic LinkTable Item()
{
// Пустой ко нстр уктор по умолчан ию обязателен
// поскольку есть общий конструктор
}
// Общий конструктор
public LinkTabIe Item(string text, string ur!)
{
// Внугренним полям присваив аются з начения ,
// переданные и з родительского объекта
this.text == text;
this.ur! == ur!;
}
lliJ
~
с _,
~C
Vlю Fa m
ДPP l t,~",
D
-
§ -
М38:В- Р ",?,
C001:g..<"'i.. ,
l1li
~
_о .
~
НТf<\. Р ",?,
liJj
Xf<\. Schetm
WЮ
~
~
Sff, t e
Те х ' f ie
~
("'8'
~
Rеюcrcе г1е SQ.-
~
,-
Щle 5Сев!
[j
С<озь.> ",
11!J ~ ~ 111f' i ~ ~
D,bSot -,
~.
Siw М"I' ~,A:blQ щоо
~т
l,'В3cr ipl: FIQ
00
liI=
~
gi" ,001 Rt ~ f!.J
Iм ~SP , I.ET _yвr (00.-0 1crе,Зd us r __ 1tJe ,~ш l ms от'"
~~ "I'-;;~"
'''·'''-------------------C,
<tr>
<td>
<asp:Labe! ID= ' 'lbrПtle'' runat="selVer"
F orеСо!ог= ''#С ООООО'' F ont- Bok:l=''true''
F ont- N ames= 'Vemada" F о п!: - 5 ize=''Small''>
< !--Здесь будет за головок-- >
</asp:Labe!>
</td>
</tr>
<tr>
<td>
<asp:DataList ID="listCo ntent" runat="server">
<ltemTemplate>
<img width=''25'' hеight="lЗ" src=''Yes.gif' a!t="MapKep''>
< аsр:НурегL ink I D=''НурегLiпk1 " runat="server"
NavigateUr!='<%# Dа tаВindег.ЕvаI(Сопtаine г. Dаta l tещ 'Ur!'') (
Text=' <%# DаtaВindег.ЕvаI(Со пtаinег.Dа tа l tещ 'Text'') %>' 1>
< lItеmТеmр1з tе >
</asp:DataList>
</td>
</tr>
</tab)e>
usiпg System;
usiпg System.Data;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
11 Обновляем сетку
listСопtепt.DаtaSошсе = items;
listCo ntent.DataBindO;
)
}
}
элемента управления
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
l,r[inkTabIeTest,aspx j
r,;.;r Databound
[;.;i'" D шаЬ оun d
~ Databound
[;.;i'" D шаЬ о un d
~ Databound
<html xm1пs="httр:llwww.wЗ.огgl1999/xhtml">
<head nmat="server">
< title >Тестовая страница сложного элеме н та ynравления </tit1e>
</head>
<body>
< fопn id="fопnl" ruпаt="sеrvег' '>
<div>
< uсl:LiпkТаЫе ID='1.iпkТаblеl" runat="server" 1>
</div>
</foпn>
<!body>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</html>
using System;
using System.Data;
using Systеm. Со пfigша tiоп;
using System. Collections;
using System.Web;
using System. Web.Security;
using System. Web.UI;
using System. Web.UI.WebControls;
using System. Web. UI. WebControls. WebParts;
using System. Web. UI. HtmlControls;
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ffi:j Favorites
http:/~ocalhost lО б9/Wе Ь~tе4iln kТаt>eТеst.аs р х ... r6> Go
Добавление событий
командУ Paste
• ~ ереименуйте созданные копи и в имена оригиналов , но с
добавле нием Ext (extension расширенный), а именно:
LinkTableExt.ascx, LinkTableExtTest. aspx (файлы подцержки
LinkTableExt.ascx.cs и LinkTableExtTest.aspx.cs оболочка
п ереименует сама)
• r;;,;:rСделайте страницу LinkTabIeExtTest.aspx стартовой, вып олн ив
на ее узле в представлении пан ели So lution Ехрюгег командУ Set А5
Start Page кон текстно го меню
• r;;:;noAnpaBbTe в файле LinkTableExtTest.aspx демарацию
@Register, чтобы новая тестовая страница применяла
п ользовательский элеме н т управления из друго го файла
Browse: Му Solutюп
<Search> Г 9 MdAl:IYit<JtesToRender(System .
II----,---=~=---,---:-.,...:;::;...-i I (. . ~o MdParsedSubObject(obj€ct)
щ- . 4t$: GridViewUpdateEven.... ;
: · о НурегLlПkО
ffi··~ HiddenField '
: "о LoadVieWState(obj€ct)
,
4:
ci:J ... Hlerarc:hio:alDataBouг .
i,··-" ORenderContents(System,Web.U
1i>. '11 Hots~t
C~ :!5' ImageUrl
"''11 ....
ц оt:'jXJЬ:оПесооп .(~ NavigateUгl
';''11
~,'. 4$ HyperLinkColumn i···· .- Target
(. . !5' Text
ffi··~ HyperLinkConuolBuil
m
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Browse: му SoIubOll
Листинг
LinkTableExt.ascx
Смена типа элемента
• шаблоне файла
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg System;
usiпg System.Data;
usiпg Systеm. Со пfigша tiоп;
usiпg System. Collections;
usiпg System. Web;
usiпg System. Web.Security;
usiпg System.Web.UI;
usiпg System. Web.UI. WebControls;
usiпg System.Web.UI.WebControls.WebParts;
usiпg System. Web.UI.HtmlControls;
11 Обновляем сетку
listСопtе пt.DаtaSошсе = кешs;
listCo ntent.DataBindO;
)
}
}
Листинг
LinkTableExt.ascx.cs
Добавление нового хласса - упаховхи
• файл
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
управления.
IistContent System.Web.UIwet·
~:' l1]lJ I [;] [2J I ~
CancelCommand
DаtaВlгЮlr>;J
DeleteCommand
Disposed
ЕditCоmmaгЮ
Inlt
ItemCommand
ItemJeated
-
• IJ$Добавьте в масс Li n k Table и созданны й обработчик
стан дартн ого собы тия следующий код
us iпg System;
us iпg System.Data;
us iпg Systеm.С опfigша tiоп;
us iпg System.Collections;
us iпg System. Web;
us iпg System. Web.Security;
us iпg System. Web.UI;
us iпg System.Web. UI. WebCo ntrols;
us iпg System. Web. UI. WebCo ntrols.WebParts;
us iпg System.Web. UI. HtmlControls;
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
11 Обновляем сетку
listСопtе пt.DаtaSошсе = кешs ;
listContent.DataBindO;
)
}
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
11 Генерируем событие
LinkClicked(this, aгgs);
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
(
protected void paQe_ LOadl object sende r, !:',entA'QS е)
i t:=~ [l ] - n ~'" ,inkT~bj"T t:"" I "C=M Jl'2 ~ ~ ИОI~О 1!" \ " ДIIЫIOГ -С",р~ис\"" ,
' http ' ((WWW d i e 1Qg ,~ п к ... n ... t ' );
i tens [2) nЕ'" LinkTdblelte,, ('CCWJ ~a lI'З ~ 9а'ЫЧ~8 J ачаsсriрt',
'j"y,ycr;pt ' voi iJ !О )" );
L in kТ~bl"l.It ~,, ~ - i t ~ ,.~ ;
об р аботчи к та к
using System;
using System.Data;
using Systеm. Со пfigша tiоп;
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
1. Donе iпtr.леt
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
дочерний элемент.
Первый способ
'"
в м С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Web - страница
i
BackColor I >~
МyContro l l
I BackColor I
LaЬell
using System;
using System.Data;
using Systеm. Со пfigша tiоп;
using System. Collections;
using System. Web;
using System.Web .Security;
using System. Web.UI;
using System. Web.UI.WebControls;
using System.Web.UI.WebControls. WebParts;
using System. Web.UI.HtmlControls;
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
MyControl l
• ~ о п робуйте выделить элемент уп р авления и убедитесь, что он
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<%@ Register S гс =''МуСо пtго L аsсх'' ТаgNаme= "МуСопtго l " TagPrefix="llcl "
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
<br 1>
<asp :RadioButtonList ID='RadioButtonList1 " runat= "server"
RереаtDirесtюп=''Ноriwпtаl''
OnSelectedlndexChanged='RadioButtonListl_SelectedlndexChanged '~
<asp :Listltem Value='Red"> Кра с ный </asp:ListItem>
< asp :Listl tem Value= "Gree п"> 3 ел е н ы й </as р :Listl tem>
<asp :Listltem Vа luе =''В luе ' '> С иний </asp:Listltem>
</asp:RadioButtonList></div>
<br 1>
< inр и! id="Submitl" type="submit" value="submit" 1>
</form>
</body>
</html>
его юш е нту.
• ~3аполните обработчик
Rad i o Butt on Li st1 Se1ected I nde x Changed( )
страницы в файле MyControrrest.aspx.cs следующим кодом
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebContro ls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
switch (index)
{
case О:
МуСопtгоl1.FогеСоlог = System.Drawing.Color.White;
МуСопtгоl1.ВасkСоlor = System. Drawing.Co lor.Red;
break;
case 1:
МуСопtгоl1.FогеСоlог = System.Drawing.Color.Aqua;
МуСопtгоl1.ВасkСоlor = Sys tеm. Dгаwing. Со lor. Gгее п;
break;
case 2:
МуСопtгоl1.FогеСоlог = Systеm.Dгаwing.Соlог.УеПоw;
МуСопtгоl1.ВасkСоlor = System. Drawing.Co lor.Blue;
break;
}
if(index!= -1)
М уСо пtго l1 .Теxt = RadioButtonList1.1tems[index]. Value;
}
}
Второй способ
using System;
using System.Data;
using Sуstеm.Сопfigurаtiоп;
using Sуstеm.Соllесtiо пs;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using Sуstеm.WеЬ.U I .WеЬСопtrоls;
using System.Web.UI.WebControls.WebParts;
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
using System.Web.UI.HtmlControls;
InnerLabe l l
using System;
using System.Data;
using Sуstеm.Сопfigurаtiоп;
using System.Collectio ns;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using Sуstеm.WеЬ.U I .WеЬСопtrо ls;
using Sуstеm.WеЬ.U I .WеЬСопtrо ls.Wе ЬРаrts ;
using System.Web.UI.HtmlControls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
if(iпdех!= -1)
М уСо пtго l1 . lnnегL а Ь е l1 . Text = RadioButtonList1.Items[index]. V
}
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
I submi t
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
пользовательского элемента
.!! Cut
lt1I Сору
if!, Paste
Paste Alteгnate
'х D€lete
V~Code
I I
1!1 View Rl Browseг
Foгmat selec:tion
Foгma1jjng аnd Valid.aoon ...
using System;
using System.Data;
using Systеm. Со пfigша tiоп;
using System. Collections;
using System.Web ;
using System. Web.Security;
using System. Web.UI;
using System. Web.UI.WebControls;
using System. Web. UI. WebControls. WebParts;
using System. Web. UI. HtmlContro ls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
if(index ,=
- 1)
М yControll. InnerLabel1 .Text := RadioButtonListl. Items[ind ex]. Value;
}
}
пользовательсхого элемента
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
С настройкой
Items[5] внугр е нних MyCon t rolTest . ascx
компонентов
Будем с чи тать, что один из трех ста н дар тны х элеме нт ов управления
кон тейнера, а именно с пи сок, мы заполнили деюыративно. Два других
элеме нта кон тейнера будем за полнять прorра мм но.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</asp:DropDownList><br 1>
< Ьг 1>
<asp:P laceHo!der ID=''P IaceHo!der2 " runat= "server''></asp РвсеНо!
< Ьг 1>
<asp :Labe! ID=''Label2 '' runat= "server" Text=''Labe!''></asp:Labe!><!
< Ьг 1>
<asp:Pane! ID=' 'РапеLЗ'' runat="server" BackCo!or="Gamsboro " Border:
ЕnaЬ!е ViewS tate= ''F а Ise" Н о rizo ntalAlign= "С enter''>
<asp:DropDownList ID =''Dгор DоwnListЗ'' runat="server" A utoPostB
<asp :ListItem Value=''N o ne">(N опе )</asp:ListItem>
<asp :ListItem Value='HeaderTest.ascx''> Верхний колон титул </a
<asp :ListItem Value='TnneDisp layTest. ascx''> Кнопка ' время- дат,
<asp :ListItem Value=''LinkTab!eTest.ascx''>C писок гиперссылок
< asp :ListItem Value= ''LinkTab!e ExtTest.ascx"> Контроли р уем ы й
<asp:ListItem Value='MyControrrest.ascx''> C настр ойко й внугр
</asp:Drop DownList><br 1>
< Ьг 1>
<asp :PlaceHo!der ID=''P IaсеНо!dегЗ " runat= "server''></asp РвсеНо!
< Ьг 1>
<asp :Labe! ID =''LаЬеlЗ '' runat= "server" Text=''Labe!''></asp:Labe!><!
< Ьг 1>
</div>
</form>
<!body>
<lhtml>
DупаmiсUsеrСоntrоls.аsрх
I (NOne) 3
I (NOne) 3
I (None)
31
- - ..:J
Lосзl in1J" anet
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg System;
usiпg System.Data;
usiпg Systеm. С опfigша tiоп;
usiпg System. Collections;
usiпg System. Web;
usiпg System. Web.Security;
usiпg System. Web.UI;
usiпg System. Web. UI. WebControls;
usiпg System. Web. UI. WebControls. WebParts;
usiпg System. Web. UI. HtmlControls;
11 Вспомогательная функция
private void MyLoadControls(Control сопtaшегРапеl)
(
11 Объявляем вспомогательные ссылки на ин терфе йсны е
11 элем ен ты текуще го контейнера
DropDownList list = null;
PlaceHok:ler ph = null;
Labellbl = null;
о TuneDisplayTest.ascx
о LiпkТаЫеТеst. аsсх
о Liпkтаы Ехtтеst.аsсхx
о M yC ontro IГe st. ascx
• ~Откройте новые файлы в дескрипторном режиме и замените
директиву @Page н а @Control , все остал ьны е атрибугы
директивы @Page оставьте пр еж ни м и . Теперь это будуг не
страницы, а польз о в ател ьские э леме нты управления. Директиву
@Reg i ste r с ее атрибугами остав ьте в покое
• ~дали ть и з кода все дескрипторы <html> , <body> ,
< f o r m> , <head> и за крыв аю щие их дескрипторы.
• г;.:.='Для н ов ых файлов >I< .ascx откройте файлы скрытого кода
>1< .ascx.cs и замените в объявлении масса и м я наследую щего
масса с" Sys t em . Web . UI . Page " на "
Sys t em . Web . UI . Use r Cont r ol " Остальной код массов
оста нется пр еж ни м.
19:02:44
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
.1J ~
T...-rpl ..,... Гf! ;:;:
~ ~ ~ ~
АЧ' r.ET \', 00 ASP J-ET W3!J ж-sma l Vleb ЕrrjЖ)l Web
Sib SOfYEO Si'" stoc"" K~ Sib
I v ~"'" CI
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
/ MultiViewControl,aspx l ,., х
,.- MultiViewl
, ~
i" Viewl
View2
-
.- View3
,
Visual Studio 2005 во время проектирования показывает все
представления View в раскрытом виде , но на этапе вы п ол н ени я на
Вариант 1
<body>
< fопn kl="fопnl" runat="server''>
<div>
<asp:DropDownList ID= ''DropDownList1 '' runat="server"
AutoPostBack='True"
О пS е lected IndexC hапgеd = ''Drop DownListl_S е lected IпdехС hanged I
</asp:DropDownList><br 1>
<aspMuluView ID='MuhMewl " nmat="server" ActiveViewIndex="O">
<asp:View ID::::''Viewl '' runat= "server''>
< Ы > Мое qюто < lhl >
<asp:Image ID='1magel " runat= "server" lmagеUгl= "~lМуРhоtо.jр:
</asp:View>
usiпg System;
usiпg System.Data;
usiпg Systеm.Сопfigшаtiоп;
usiпg System. Web;
usiпg System. Web.Security;
usiпg System.Web.UI;
usiпg System. Web.UI.WebControls;
usiпg System.Web.UI.WebControls.WebParts;
usiпg System. Web.UI.HtmlControls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
представлениями
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Мое фото
Local in-o-.:net
Вариа н т 2
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Мы, также , назначили для списка Аи toPos tBack= " True ", чтобы он
индивидуально осуществлял обратн ую отсылку Ну; а если на странице
будет мно го интерфейсных элементов с возможностью постинга ,
которые долже н БУдет нас трои ть пользователь. В этом случае будет
расточительно, что каждый элемент интерфейса при настр ойке
индивидуально посылает страницу на сервер для обновления. Лучше
предусмотреть отдельную кнопку; которая отдаст команду браузеру на
обратную отсылку после настройки всех интерфейсных элементов .
Выполним эти модификации на новой странице.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using System;
using System.Data;
using Systеm. Со пfigшаtiоп;
using System.Web ;
using System. Web.Security;
using System. Web.UI;
using System. Web.UI. WebControls;
using System. Web. UI. WebControls.WebParts;
using System. Web. UI. HtmlControls;
m
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
• ~ыполните страницу
m
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Вrowse: AI Components •
.~ CommandAгgument
; .~ СоттandNате
i""b Base Types I.. ·~ PostвackUrl
~"1b Derived Types i-~ Text
riJ···4$ Вutton I.. ·~ ValidatJonGroup
$. .4$ ImageВutton ,_о , Cl,ck
r4J ...4$ LinkВutton
!.... '1 соттаnd
createCoo1yo ~c:fec1j oo О
~ GetActiveVlew O
.~ МJ I1jV~W O
ActiVeVieW!гdex
Enatk1Пеm h;)
V..ews
{J Nextv~wCommard\Jame
~ FТeVio..lsVi€wComma l"d Name
OQO SWitchViewByIOComm zrd.j ame
{J SW itchViewBy Irde xComm cп:f.Ja me
' AcbYeY~
Пере:
ш
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
слею
пред(
Co ml1
КНО П I
Пере:
пред]
пред(
Co ml1
КНО П I
Пере:
пред(
з н аче
и д ен '
свой(
Co ml1
КНО П I
упра l
Пере:
пред(
о п ре/
ин д еl
свой(
Co ml1
КНО П I
упра l
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
IO b t nNe xt O
Views[O ] Te x t Ne x t >
Co mmandNameNe x tV i ew
IO b t nPrev l
Te x t < Pre v
Co mmandNameP rev V i ew
Views[l ]
IO b t nNe xtl
Te x t Ne x t >
Co mmandNameNe x tV i ew
IO b t nPrev2
Views[2 ] Te x t < Pre v
Co mmandNameP rev V i ew
using System;
using System.Data;
using Systеm. Со пfigша tiоп;
using System.Web ;
using System. Web.Security;
using System. Web.UI;
using System. Web.UI.WebControls;
using System. Web. UI. WebControls. WebParts;
using System. Web. UI. HtmlControls;
<body>
< fопn kl="fопnl" runat="server''>
<div>
<asp:DropDownList ID=''DropDownList1'' runat="server''>
<asp :Listltem> Моя фотография < /аsр:Listltеm>
< аsр:Listltеm>Мои стихи </asp:Listltem>
<asp :Listltem> Встроенный календарь < /аsр:ListItеm>
</asp:DropDownList>
<Ы >
Мои стихи<lhl>
<р>
MultiViewContro12.aspx
Мои стихи
у Лукоморья дуб зеленый
Златая цепь на дубе том
И днем и ночью кот ученый
Все ХОДИТ ПО цепи крутом
Loca in1J"anet
• Ст и л и и шаблоны
/ WizardControl,a5px* ~ J
ЕЕ го'
SteD
Steo 2
INext I
Дескри п торное п редставление за готовЮ1 БУдет таЮ1м
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
WiZ8rdControl.8SPX*
,.ЕН . Wizard Ta5k5
ilstep 1 Auto Foгmat ...
IIStep 2 Step IStep 1 ElI
!I~~~~~. ~_ .~.~~N~e~xt~l~ AddjRemove W~ardSteps ...
Convert to StartNalkJationTem~te
Convert to StepNalkJationTem~te
Convert to F,nshNa"gatiooTerrplate
Convert to S,deBarTem~te
Ecit т em~tes
'"
в.м. С""",,,в
~
о
1 Яер 2
~ AIowRеtllЛ
EnaЫеThе пg
T,~
Тс",
EnaЫeVIe'f)'State T, ~
ЯерТуре Auto
Title Step 1
dd'---_.J-I _-,ес:,,,mo:::.,:.:,,---,
_---"A::
еж Са гсel
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<lhead>
<body>
< fо пn id="form1 " runat= "server''>
<div>
<asp:Wizard ID=''Wizard1 '' runat="server" Васk С оlог= "# ЕFF З FВ"
BorderColor= ''#B5C7DE''
BorderWidth="1px" Width="100%" ActiveStep lnd ex=''O''
StartN еxtВ uttопТеxt="Далее >"
StерNехtВuttопТехt="Далее >" StepPreviousButtonText="< Назад"
FinishCompleteButtonText='ToTOBO " FinishPreviousButtonText="< Н.
Н еаdегТехt='Жи з н е нно важная ан кета!">
<WizardSteps >
<asp:WizardStep ID=''WizardS tep1 '' nшat= "sе rvег " Тitle ="Д рузья "
< hЗ >
Какой пр ез и де н т самый лучший? <lhЗ>
<asp:DropDownList ID=''DropDownList1'' runat="server">
<asp :Listltem> Наш П угин </asp :Listltem>
<asp :Listltem> Их Клинтон </asp:Listltem>
<asp:Listltem> Похожи й на Чингиз -Хана </а s р :ListItеm>
<asp :Listltem> Вы сам и </asp:Listltem>
<asp :Listltem> Ваша соседка </аsр:Listltеm>
</asp:DropDownList>
</asp:Wizard Step >
<asp:WizardStep ID=''WizardStep2'' nшat= "sе rvег" Тitle =' Туризм '
<h2 >
Где Вы были с 19 по 21 августа 1991 года?<lh2 >
<asp :RadioButtonList ID='RadioButtonList1 " runat= "server''>
<asp:Listltem> На Красной п ло щади </а sр:Listltе m>
<asp:Listltem> На Луне </аsр:Listltеm>
<asp:Listltem> В ч ужом огороде </аsр:L istltеm>
<asp :Listltem> У тетеньки </asp:Listl tem>
<asp:Listltem>B ayre</asp:Listltem>
</asp:RadioButtonList>
</asp:WizardStep >
<asp:WizardStep ID =''WizaгdS tе р З'' nшat= "sе rvег " Тitle =' 'ВстреЧI
< hЗ >
Кайтесь! Место встречи изменить нельзя! < IhЗ >
Ваш ИНН :
<asp:TextBox ID='TextBox1 " runat= "server" 1>
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</asp:WizardStep >
<asp:WizardStep ID='WizardStep4" nmat="server" Тitle="Досуг">
<h2 >
Мера ПООI.l.lpения < lh2 >
Ус и ленная диета + кrlИзьма ззз перцем!
</asp:Wizard Step >
<lWizardS teps>
<HeaderStyle ВасkСоloг=''Вluе'' Fопt-Воk:l='Тruе" Fопt-Size="Х-L~
</asp:Wizard>
</div>
</form>
<!body>
</html>
Листинг Дес~рипторное представление страницы
Несколько замечаний:
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Т уризм
r На Краснои IШощади
Встречи r На Луне
l.I2.m r В чужом огороде
r. у тетеньЮI
r B ауте
I < Назад Далее>
времени выполн е ния. Мы уже говорили , что для раз р аботчика задача
управления объ е ктами страницы во время выполнения сводится к
с озданию и программированию обработчиков событий , на которые
MOryг реаrnровать эти объ е кты. Ниже перечислены события , на которы е
может реагировать э кземпляр класса Wi z a r d .
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
.. ., Carк:elButtOnCliCk
.. ., FinisГВuttOllClick
..'1 NextвuttonO:: k
.. " Ргеviru,вuttоnCick
..'1 SideBarButtOnClick
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. СН"""'f~'•~~~~~~:~~~~=:~~~~~~П~"'~'~'"~~~"~-~"~",~"~"~"'~'~.N~П
/ Wizif"dCmtтd ,aspx,cs* WizaгdContгol.aspx* т Х
Встречи lri~($~~~
~ Усиленная днета + клизьма ззз перцем!
using System;
using System.Data;
using Sуstеm.Сопfigurаtiоп;
using Sуstеm.Соllесtiо пs;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using Sуstеm.WеЬ.U I .WеЬСопtrоls;
using Sуstеm.WеЬ.U I .WеЬСопtrоls.Wе Ь Раrts;
using Sуstеm.WеЬ.U I .НtmlСопtгоls;
string tide ;
title = WizardStepl.1ide;
sb.App end(tit1e + ":" + DropDownListl.Text + "< Ьг />");
title = WizardStep2.1ide;
in! index = RadioButtonList1.Selectedlndex;
if(index! = - 1) // Есл и что-то выбрал
sb.App end(tit1e + ":" + RadioButtonListl.Items[index]Text + "<Ь
/* !! !!!!!!!!! !!!!! !!!!! !!!!! !!!! !!! !!!! !!!!! !!!!! !!!!! !!!!
// Для элеме н та класса C heckBoxList н ужн о пров е рять коллею
C heckBoxList C hec kBoxListl ;
foreac h (ListItem item in C hec kBoxListl .Items)
(
if (item.Selected)
sb.Append(item.Text + "; '');
}
!!!! !! !!!! !!!!! !!! !!!!! !! !!!!! !!!!! !! !!! !! !!!! !!!!! !!!!! */
WizardC ontrol.aspx.cs
• ~ ерейдите в режиме Design на первый шаг WizardStep1, чтобы
автоматич ески уста новил ось в НОЛЬ з нач е ние свойства
ActiveSteplndex объекта Wi z ardl и пользователю вначале
отображался первый ша г
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Друзья Вы выбрали:
Туризм Друзья: Их Клинтон
Встречи Туризм: В чужом огороде
i!<>m Встречи: 0123456789
Вам рекомендуется:
у сrшеЮlая диета + КШlЗьма ззз перцем!
< На зад ГОТОВО
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Свойство Описание
Среди свойств компонента Wiz ard есть общие сти ли, затра rnв ающие
на стро йки всех элементов, а есть ИН Д ИВИдУальные для каждой группы
элемен тов . Следует по м нить , что если одновременно определены те И
д р уги е стили , то конфrlИкта не БУдет, прос то ИН Д ИВИдУальные
пара метры нас тройки п ерео пр ед елят (отме нят) общие стили. В языках
прогр амм иров а ни я используется тот же принцип , переменная
Наследуется
Wi z ard от класса
ControlSty l e WebControl И применяется ко
всем е го р азделам
'"
В.М. СН"",,,В Про,рйммupoвtJNШ' Na ASP.NET
Применяется к компонентам
S t epSty l e представления, ВЮJюченным в
текущий шаг
навигационные кнопки
свойством S t epType=Step
Применяется к кнопкам РinisЬ и
. . h. 1 Previous в последнем шаге, если их
FlnlS Prev l ousBu t tonSty е ~
ВИДИМОСТЬ зада на сваиством
StepType=Fin i sh
Применяется к кнопке Са псе! во
всех шагах, если ее видимость
CancelButtonSty l e
задана свойством
Di splayCancelBu t ton=True
Wizard Т asks
Auto Foгmat, ,.
Step IДрузья
Add/Remove WizardSteps,
COГNert to StartNavigationT errplate
Convert to StepNa~gatiooTerrplate
Convert to FlrishNavlgationTem~te
Convert to SId=BarTemplate
Ecit т em~tes
~;'::~:,~~~езиде,нтсамый
Дaneе > I
'"
в м С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
,j!; Cut
i:tI Сору
I~ Paste
Paste Alternate
Х D€l€te
Stye ...
View Code
Edit Iтag€
I Auto Format".
I
AddjRemove WizardSteps ...
COIlvert to Starb\JavigatjOllTemplate
COIlvert to StepNavigatjonTemplate
COIlvert to Finsf"Ii\JavigatiOllTemplate
COIlveгt to SideBatTemplate
-
EditTemplate ~
liJ Re~esh
Ia Propeгties
--1.
Про,раммupoвtJNШ' ,ю ASP.NET
..:..IgJ~
поощрения
выбрали:
Д~IУЭ'ЬЯ Похожий на Чингиэ-Хана
~~,:=,~:Ha
6
Луне
0123456769
ре ко мен дуется :
в приведе н ном коде каждый дескри п тор настра ив ает свою область
элемен та Wi z a r d . Обрат и те в ни мание, что приведе нны й блок кода
настройки ст илей оболо ч ка доба в ляет в самый конец ко нт ей н е р а
<asp : Wiz a r d></asp : Wiz a r d> , чтобы легче было искать . Если
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Browse : АI CompOllents •
System.Web.UI.WebCono-о •. \ • , ~ HeaderSty1e
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
промеЖУГОЧНblХ и последнем
S t epNav i gationTemplate
шагах, если их видимость задана
СВОЙСТВОМ StepType=Step
Определяет кнопку навигации Firllsh
. . h .. 1 для последнего шага , если ее
FlnlS NavlgatlonTemp ate ~
ВИДИМОСТЬ задана СВОИСТВОМ
StepType=Fini sh
Wizard Tasks
Auto Format ...
Step I Друзья ~I
Add/Rermve Wizck-dStерs ...
Сопvегt to StepNavlgabonTemp~te
Сопvегt to Fil~hNalkJаtioпТеm~аtе
Сопvегt to SideВErTerrplate
Edit Те rmlates
в м СН"",,,В Про,раммupoвtJNШ' NQ ASP.NET
~, ш W"u .... JcoпIrol.m.p х.. • Х
.. "'"
~
~ Pacte
~,
повокшага:
нт самый лучший?
""
Pacte !.Jf<м:e
Х
\3
Do!I;\i'
st'y4o" ,
у~",с ш Д"'"'~O>
I
Y~"'C~tc..~
r' • Ie "'7"
~! \0 s t<pNa"9ЖOl1Т~ tе
CC<"Ner! to F ~уqжaтrещ::t;te
Е'J~"гг~ч_еЫJ"
• ~T" ~
SIJ~~ te
V\f\zaroXontrol.aspx,cs WlzardControl.aspx*
""""""""""""""""""Ш
г Wizard Tasks
izard 1 - HeaderTemplate
Template EditJng fVIode
Г\ead€rTemplate
Dsplay
Это заголовок шага:
Еnd Т enWte Ediln;i
•
т.
--------------------------------------------
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<HeaderTemplate >
<Ы >
Э то заголовок шага:
<%= Wizard1.ActiveStep.1ide %>
</h1>
< lНеаdеrТеmрlatе >
Wizard Tasks
Auto Format ...
Step I Друзья
Add/Remove WIZE<dSteps ..
Convert to StartNav'9аtюпТеmрзtе
Сопvегt to StepNavigationTemplate
Сопvегt to Fi1ishNavigаtioпТеmраtе
Convert to 5ЮеВагТеmplаtе
Edit Те rmlates
в м
, _". СН"",,,В
.. "'"
~
~ Pacte
~,
повокшага:
нт самый лучший?
""
Pacte !.Jf<м:e
Х
\3
Do!I;\i'
st'y4o" ,
У~"'С Ш
Д"'"'~O>
I
y~", Ce>rrpmmt c..~
r' • Ie "'7"
Auto FCfma!",
~! \0 s t<pNa"9ЖOl1Тeщ:>ii; tе
CC<"Ner! to F ~уqжaтrещ::t;te
Е'J~"гг~ч_е Ы J"
• ~T" ~
SIJ~~ te
у Wiz"dCono-u,asрх,сs / WizardControl,a5px* I I
~jzard 1 - SideB-аrТеmрlаtе
SideBarTemplate
i
ISldeВarTemplate - Cl,ck to s!art eciting, I
Wiza-dСonUоl,asрх.сS WizardControl.aspx*
~~~~~~~~~~~Ш
izardl- SideBarTemplate Wizard Т asks
ТеЩ)lаtе Eclmg Mode
SideBarTemplate
~ Cut
Сору
Paste
Paste Altегn.зtе
Х Delete
Style ...
View Code
~ View in Browser
Edit Image
EditTemplate ~
[i] Re~esh
~ Properoes
Wizard Tasks
Auto Format ...
Сопvегt to StepNavlgabonTemp~te
Сопvегt to Fil~hNa~аtЮпТеm~аtе
о, ~
I!p Это заголовок шага:
l' Друзья
I , Тm изм Какой президент самый лучший?
I ' Встыечи
rн аш Пути н :.:J
I , .!illY!:
Дал е е> ]
I !
• ~ыполните ст р аницу, все должно работат ь
Следует все гда п ом н ить, что при всем мно гообразии н астроек стилей и
шаблонов ин терфейс п о умолчанию является самым выверенным с
точки зрения экономии ресурсов при обмене с юшентом. Поэтому
менять н астройки нужно разум н о , за неорди н арный интерфейс
потребуется дополни тельная п лата .
I Далее>
т
(
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
предопределенными именами
Об р аботч ик Описание
Э тот метод
вызывается то
когда впервые
за п ускается
приложение и
создается ДOM€
m обно
инициализира
такие данны е,
де ревья навuгG
общие счетчш<
д р.
Вызывается ср
после завершеJ
работы
приложения.
Приложение
работу вслеДСl
Appllcatlon End()
перезапуска т
или перехода Е
новый домен I
обновления
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
файлов
виртуального
каталога
Вызывается
всякий раз, кш
приложении
Appllcatlon Error()
возникает
необработанн(
событие
Вызывается
всякий раз, кш
приложении
начинается но]
сеанс. Удобен ,
Session Start()
инициализаци
инqюрмации ,
специфичной ,
юшечного
пользователя
Вызывается
всякий раз пру
завершении
сеанса. Сеанс
завершается, КI
мы явно
освобождаем €
коде , или если
заданное врем
(обычно 20
ми нуг), не
получив ни од
запроса.
Используется )
очистки любы
связанных дан
ш
в.м. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
Вызывается в
начале каждоп
запроса, ВЮlЮL
запросы на фаi
Appllcatlon Beg l nRequest()
не являющиеCJ
Web-ф:Jрмами
(например , We
службы)
Вызывается дс
начала
аугентификацу
(распознавани
пользователя).
Appllcatlon Au t hentlcateRequest()
Сюда можно
поместить
собственную
логику
аугентификацу
Вызывается nc
выполнения
специальных r
Используется
вместе с
Appllcatlon ResolveRequestCache()
кэшированием
выходных даю
Срабатывает
после извлечеJ
из запроса
инф:Jрмации о
Appllcatlon AcqulreRequestSta t e()
пользователе
перед
сохранением е
ю)ллекции сеа!
ш
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
Вызывается ш
тем , как БУдет
выполнен защ
HTML-КОа
обработчикаМI
страницы
Вызывается пс
Appllcatlon PostRequestHandle r Ex ecute()
обработки зап]
Вызывается то
Ю)гда информа
сеанса
сериализуется
чтобы стать
доступной в
следующем
запросе
Вызывается ш
добавле ни ем
информации в
Appllcatlon Upda t eReques t Cache()
выходных дйю
если он был
разрешен
Вызывается в
Ю)нце запроса
очистки
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
отладки
11**************************************************** ...
11******************** Обработч ики событий приложения *'
11**************************************************** ...
//**************************************************** ...
//******************** Обработчики событий за про са *****.
//**************************************************** ...
</script>
1003
Роп:
Stop
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</script>
ОШl1бка
крайнем случае.
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Пример
Этот :saГОЛО80ЧНЫЙ 1еКС1 будет цеНТРИРО8ан 8 Тl!I(ущем документе И иметь краСНЫЙ цвет (бледный
8ИД) !
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ДеCJ:рiolnТOр
СiИЛЯ
I I I I
<style type="textlcss ">
Селектор
HTML -теГcl
[ body
{
background : white url(MyWeb.jpg);
[ font-family: Arial, Helvetica, sans-serif;
}
Селектор
HTML -ПJГcI
[ h1
{
[ color: red ;
text-align: center;
}
Cnисо'
,.",=p ID [ #id1 , #id2, #id3
Н ТМL-обwпое {
[ font-size: 1 . 5ет;
font: bold italic;
}
Селе~iOР
r.ла сса
[ .myClass1
{
OnJ)eAMeH.,e
[ color: #9999FF;
"'"""
Селектор
}
для кК~~С~orо [ h2.myClass2
лt п а lOJГOB (h2) {
}
</style>
Атр и буг type= " te x t/ css " дескриптора ст и ля указы в ает броузеру,
ч то в се п оследую щи е сти л и бу,цуг С 55 - стилями. В п р иведенном пр име р е
селекторы body и h1 сов падаю т с и менами де скрипторов НТМ L.
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Прим е р
h1
(
co lor:#FFOOOO;
text· а ligп :сепtег;
)
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
#TextBoxl
(
font- family:"Courier N ew", СОШЕ Г, mоrю;
font-size:24px;
font:bold italic;
backgrourkl-соloг :# ООООFF;
co lor:yellow;
width:400;
)
.ЬtпRеsuh
(
backgrourкl- ima ge :url(Ba с k grОШld lmage. Ьmр );
co lor:white;
}
</style>
<lhead >
<body>
<Ы >
Заполните аикету! < lhl >
< fопn>
<р>
Введите Ф ИО:
<input id= 'TextBoxl " name= 'TextBoxl " type="text">
</p>
<р>
Введите ИНН:
<input id= 'TextBox2 " naше =' ТеxtВох2 " type="text">
</p>
<center>
<input id =' 'Вuttопl '' сla ss='Ъ tnRеsult " name= "Buttonl"
tуре =' Ъuttоп " vаluе="О тослать' '>
</center>
</foпn>
<!body>
< lhtшl>
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
встроенной CSS. "С тильный " снимок моего результата будет таким
Заполните анкету!
Внешние стили
<style type=''text/css''>
П одключа ется Н е П Оi
@imро rtшl(hеаdе г.с ss);
одн а CSS NetscG
</style >
<style type=''text/css''>
Подключается @imро rtшl(hеаdе г.с ss); Н е п D,i
две CSS @imро rtшl(dеfault . сss); NetscG
</style >
8сам(
П одключа ется header
две CSS (в <style type=''text/css''> голая
<style type=''text/css''>
П одключа ется @imро rtшl(hеаdе г.с ss); Поряр
две CSS </style > н е ВЮ
</style >
<style type=''text/css''>
@imроrtшl(hеаdег. сss);
body
Подкл
(
внеШf
background:white шI(МуWеЬ.jрg);
допол
fопt-familу:Агial, Helvetica, sans-serif;
встрОЕ
)
Встра
h1
теор еl
(
им еть
color:#FFOOOO;
приор
text - а Iign:center;
внеШf
)
заВИСI
Под ключается
КОНкрЕ
три CSS #TextВoxl
Поэто
(
изб еж
foпt-familу:"Сошiег New", Сошieг, топо;
недор
font-size:24 px;
однов
font:bok:l italic;
прим€
Ьас kground - со 10 г:#ОООО F F ;
встрОЕ
соlогуеПоw;
стиле
width:400;
) Поряр
н е вт
.btnResult
(
background- image:urI(Background Image .Ьтр);
color:white;
)
</style >
<style type=''text/css''>
body
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
(
backgro und:white urI(MyWeb.jpg);
fопt-familу:Аrial, Helvetica, sans-serif;
)
ПОДЮJ
внеШf
h1
допол
(
встрОЕ
color:#FFOOOO;
text- а lign:center;
Встра
)
теореl
иметь
#TextВoxl
приор
(
внеШf
foпt-familу:"Соuriе r New", Сошier, топо;
заВИСI
По,цЮJючается font-size:24 px;
КО Н крЕ
три CSS font:bok:l ita lic;
Поэто
Ьас kground - со 10 r:#OOOO F F ;
избеж
co lor:yellow;
недор
width:400;
однов
)
прим€
встрОЕ
.btnResult
стиле
(
background- image:urI(Background Image .Ьтр); ПорЯ,ll
co lor:white; н е ВЮ
)
@importurl(header. css);
</style >
определений стилей
• r;;.;:rОткроЙте страни цу TestCSS.htm в броузере и у6едитесь, что
получился тот же результат, что и при использова н ии встроенных
стилей
~ Документ со встроенной CSS - Мicrоsоft Internet Explorer
•
Заполните анкету!
Введите ФИО:
Введите ИНН: I
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
f,1y Project5
Ае llJ mе : ::::J
~1";;е:Ь"r
;: ;;-.;')---=======----'з~
; ,
FIes ofty]::e :
L
После щелчка на кнопке Add оболочка физически скопирует
выделенные файлы в файл проекта WеЬSitеб и они появятся в панели
Sоlutiоп Explorer. Если вы н е увидели там этих файлов , то щелкни те на
кнопке Refresh панели Sо lutioп Explorer, чтобы оболочка обновила
п редставляемую п осле ко пи рования информацию
sj ExternalCSS.css
0iI MyWeb.jpg
f! StyleSh€€t.css
~ TestcSS.ht m
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<html>
<head >
< title>Докуме н т со встрое нн ой CSS </tide>
<meta content=''text!html; charset=windows- 1251" http-еquiv="Со пtепt-Туре
< liпk rel="stylesheet" href=''Externa lCSS.css''>
<lhead>
<body>
<Ы >
Запол ни те aH KeTy! <lhl >
< fо пn>
<р>
Введи те Ф И О :
< inри! id='TextBoxl " naше='ТеxtВох l " type=''text''>
</р>
<р>
Введи те ИН Н:
< inри! id='TextBox2" naше='ТеxtВох2" type=''text''>
</р>
<center>
< inри! id=''В uttо пl '' сlass='Ъ tnRеs ult " паmе::::''Вuttопl''
tуре='Ъuttоп" vаluе="Отослать">
</center>
</foпn>
</body>
<lhtml>
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
на строен
~~tCSShtm • х
'l!ШР
'р'
В ~" ДИТ " ФИО :
<~ id * 'To xtBo x 2" na~o * "Tox tB ox 2" t ypo * "te x t '>
<Jp>
<c e nt er>
<l!:иn!1 id = ·Buttolll ' сlаgg = " Ьt ПRезult " nan e =" BlH tonl "
typ,,- "bu tto n " v ",lu,,- "Отослать">
<Jcente r>
<! fo rrr.>
< !Ьodу>
<! htm l;.
Customlze ? х
г Imag€ Edtor
Г Lзуrut
р" мenu Взr
Exple<er 6.0
I ТП'срп~t Explorer 3.02 I N€tscape f\Javigator 3,0
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<fo r m action;:::>
<р> dP ExternalCSS,css
В:в Е iP StyleSheet.css
< ir aJiI TestcSS.htm I
</ р> if' Web.Coofig
<р> О Plck URL
body
(
background:white ш~МуWеЬ.jрg);
fo nt· fumily:AriaL Helvetk:a, sans-serif;
)
h1
(
co lor:#FFOOOO;
text-align:center;
)
#TextВoxl
(
fо пt-fumilу: "Соuriег New", СОШЕ Г, mоrю;
fo nt-size:24px;
fo nt:bold italic;
Ьа с kgrourкl- сою г:#О 00 О РР;
co lor:yellow;
width:400;
)
.btnResult
(
Ьа с kgrourкl- irrn ge :url(Ba с k grОШld lmage. Ьтр );
co lor:white;
)
.labe!
{
ba ckgrourкl- сою r:G гееп;
co lor:White;
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
font:bo!d ;
fo nt-size:x-Iarge;
fо пt- fumilу:Со шieг New;
}
ExternalCSS.css
• ~ыполните страницу, кото р ая в браузере станет такой
'!I Документ (О BcтpOeHHOf1 свв - Мicrоsоft Internet Explorer D Х
Заполните анкету!
Введите ФИО: Снетков В.М.
В ведите И Н Н: г,1дc:C""
ц'''"H::c
' ."OO''',,-----
Темы
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. СН"",,,В Про,рйммupoвtJNШ' Na ASP.NET
New FoIder
~ ReIТesh Folder
Jt; CUt
Сору
Paste
§I Property Pages
..
Про,раммupoвtJNШ' 110 ASP.NET
.1J~
lIf .-".-
,- •-
Terrp~tes :
~ ~ 1 [\]
~.~ ~ ~
S'ik> Shoot х м.. F ik> Т ох ! F ik> XSL т F ik> Cl:>Go D"'Ч~ m
Seif"ch 011....,
TE"l'~tes".
You if'e attemptn;J to add а the me fie to ifl ASP . ~ ~aЬ:xl. Fcr а the me fie to ье generaly сc:mu m Юle Il
уc:u site, it Sh::<Jd ье placed Ilside the ' Арр_Тhe т б ' folder . Wc:Ud you lI<e to place the the me fie Il the
' Арр_Тheтб ' folder7
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
о BulletedList
о Label
о CheckBo x
о But t on
• ~ азначьте свойства Te x t этих элеме н тов, чтобы их внешний
ви д н а этапе nроектuрованuя был таким
estтheme.aspx
• Туризм
• Сиорт
• Музык
· т:шцы J Itекстовая метка ~Флажок
FirstSkin.aspx*
1.
2.
з.
4. lliiiiiiiiiil
"1 екстовая метк
III Отправить
<asp:BulletedList runat="server"
ВасkСоюг=''Уеllоw'' BorderColor='Red"
BorderStyle='Ridge" BorderWidth="10px"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
1. Туризм
2. Спорт
3. узыка
4. Танцы
Текстовая метк
Отправить
in1J"anet
'"
в м С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Те ма Тем а
подкл юче на подключена
че реэ че реэ
Q Q
,sro ,sro
~ ~
'"
:I:
m
а.
t;
о:
s:
:I:
Ф
~
~
>-
о
о
~
/j
- --'>
~
~
о
о
~
о
s
/j
'"
:I:
m
<>
о:
s:
:I:
а.
о-
Ф
.,m
с:;
~ ~ :iim
а. !i !i а.
~
">- .,"u ., ">-
jj
о-
:I:
'"
:;
ci5'"
,
:о
~
о
~
~
т
S
,"
- ,
:о
~
о
~
~
т
S
:I:
'"
:;
'"
ci5
jj
о-
"
z
" "
Любой вариант влияния темы на элемент управления можно
отключить, если установи ть в этом элементе свойство
EnableThem in g= " False " .
+-Back •
Address 1161fNebSiteE •
1. Туризм
2. Спорт
3. !музыка
4. Тшщы
C heckBoxl .En
Текстовая метк .Флажо
Отправить
• ~ыделите объект
CheckBox l и верните для него
EnableThe ming= " True "
странице
Для нашего примера таблица долж на иметь три столбца и пять строк.
Оболочка не обладает развитыми средствами редактирования таблиц ,
поэтому проще настроить таблицу в режиме Source .
н астройки п о умолчанию
<asp:Labe! ruпаt="sеrvег" Васk С оloг =' 'В!uе '' ForeCoIoF ''Yellow'' SkinII
<asp:CheckBox nmat="server" BackCo!or="Red " BorderSty1e="Groove "
Fопt- Bo!d ='True" ForeCo!or='White" SkinID =' 'Vагiaпt2 '' 1>
<asp:Labe! ruпаt="sеrvег" FогеСо!ог=' 'Вluе '' SkinID =' 'VагiaпtЗ'' 1>
<asp:CheckBox nmat="server" BorderSty!e=''Dotted '' Fопt- Bo!d='True"
ForeCo!oF 'R ed " SkinI D =' 'VагiaпtЗ '' 1>
<asp:Labe! runat="server" Ва с k С оloг =' 'УеlЮw '' ForeCo!oF 'Red" SkinID
<asp:CheckBox nmat="server" BackCo!or="Red " BorderSty1e="Solid"
ForeCo!oF ''YeUow'' SkinID=' 'Variant4 '' 1>
<asp:Labe! runat="server" Ba c k C olor =' OВ!ue " FогеС оloг= ' 'УеlЮw '' SkinII
<asp:CheckBox nmat="server" BackCo!or="Red " BorderSty1e="Groove "
Fопt- Bo!d ='True" ForeCo!or='White" SkinID=''Variant5'' 1>
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
МуТЬете
2345678
9 10 11 12 13 14 15
16 17 18 19 20 21 22 Внешние стилевые
настройки работают
23 24 25 26 27 28 29
30 1 2 3 4 5 6
Local iп1Т.:nеt
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
му FТ o)eCtS
[;; о:::
•
T...-rpl""'"
i!i. ~ ~ ..;
[\J ~ iJ
5ty1e Sheet X~ L f i le Te,t File
"- ~ 9- T г1 е
liIIIiII С",,, D"Ч~m
<asp:lmageButton runat="selVer"
lma geUr l="ButtonlmagesIБ uttonOK.png"
SkinlD=''OKButton'' />
<asp:lmageButton runat="selVer"
lma ge Url="Butto nlmage sIБ utto пС апсе Lpng"
S kinlD =''С апсеlВuttоп'' />
г: : ~~С:~~:~~п
1___ ~ Frstskin,skin
Iii BackgroundImage.bmp
;" ... ~ ExternalCSS.css
<iI MyWeb.Jpg
i!j Sty1eShe€t.css
I.@] Testcalendar,aspx
lЗ TestcSS,aspx
В--- [з ТеsППеmе.asрх
~ TestTheme.aspx,cs
~ Web.Config
IIи С, В,
Cq nce
ОК
По смотр и те, на ст р анице на ходи тся дескрип торны й код тол ько создания
сложных элементов управления, а большой КОД тонких нас троек
вын есе н в файлы темы. Э то очень удобно и для ц е нтр ал и зова нн ого
и зменения стилевого оф:J рм ления элементов управле ния , и для
ч и табел ьн ости самой страницы.
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
• Т уриз ...
• Отдых
' Е'"
z.
3.
4.
","Х
няти.
<g I
• ЗаНЯ ТIiIЯ
• Сп"",
Тet: СТО8ая .меп:а г Фл ажсж Страница ThemeCSS.aspx
С траница TestCSS.aspx
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Выводы:
сервере .
статической страницы
<head >
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Мы видим, что среда испо лне ния AS P.NET ав томатиче ски вставляет в
код столько дескрипторов подключения CSS, сколько файлов с
таблицам и находится в каталоге темы. Обратите внимание , что п уги в
ссылках прописываются относительно корня виртуального каталога, в
Например
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
к каждой странице
<?xml version="1.0'?>
< с опfigшаtioп>
<system.web>
<compilation debug=''true''/>
<authentk:ation mode='Windows"/>
<pages styleSheetТheme=' M yТhe me" />
</system. web>
</сопfigша tioп>
бы одну
CSS , то ОТЮJючение темы по умолча нию атрибyrом
EnableThem i ng= " f al se " ОТЮJючает только skin -файлы, CSS все
равно останется ПОДЮJюченноЙ.
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
конфигурационного файла.
'"
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
При перезапуске страницы она должна быть пере адр есована на саму
себя. Такую операцию можно выполнить либо методом
Response . Red i rect() , либо методом Server . Transfer() .
Первый метод реализует полный ЦИЮl с отправкой на броузер и
ав томатическим возвращением на сервер. Он тр атит лишнее время на
пересылку Второй метод перезапускает страницу сразу на сервере без
ЦИЮlа ч е ре з клиен та. Но есть одна существенная особенность: оба
метода сбрасывают состояние вида всех элементов управления и
запускают страницу как в при п ервом за просе. Поскольку выбирать не
из чего, то мы выбир аем Pepsi и второй метод Se rve r . Т ran sf еr ()!
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
SkinID="XXX" 1>
</td>
<td >
<asp:CheckBox ID="С hесkВохб " runat="server" Text= "C heckE
SkinID="XXX" 1>
</td>
</tr>
</table>
<br 1>
<aspButton ID=''Вuttопl '' runat="server" Теxt= "Отправить " 1>
</div>
</form>
<!body>
</html>
TestSwitchThemes.aspx
using System;
Ilusing System.Data;
Ilusing System.Configuration;
Ilusing System.Co Uectio ns;
Ilusing System.Web;
Ilusing System.Web.Security;
Ilusing System.Web.UI;
Ilusing System.Web.UI.WebContro ls;
Ilusing System.Web.UI.WebContro ls.WebParts;
Ilusing System.Web.UI.HtmlControls;
11 Первый вариант:
11 Обновляем страницу с полным ЦИЮlом,
11 чтобы новая тема вступила в действие
IlResponse.Redirect(Request. Url ToStringO);
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
11 Второй вариант:
11 Обновляем страницу без пол н ого ЦИЮJa ,
11 чтобы новая тема вступила в действие
5 erver. Transfer(Request. F ile Р ath);
}
}
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
~ ..._"*-"'--
".-- _ 'JO~"""""
•
I
Т.IIIIII rIOlЖII_ U IC С rpilIlМц.'*f!И t80itcnoo T r..m. оБW+nI
DOCU"-EN1'
эtlIDII'iI ~li!Кд;;t1 c:I I,юr~1I
'~"" Y"'OJI'<_"
\.t .. e~~n~ _
SI!'lI()о"'VМВNЗ" L"'("Ч:.~~~.~~.З;:
Hfll~ 1llilCТpCttr;м nG:.;I:J'.IC"I"':
~"'V\II1 ;/1~"
LIIIМW tI::ш&t '
3Ь1J DO "'VIИaN5" IЮ,U(IIDЧI!t+. fЮ TII~
Арр_ ThemeslМyTheme
и последн ее .. . Все, что было сказано выше для д еЮJaративного спо с оба
п одключения тем и п риоритетов их пр именения , остается
Мастер-страницы
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
шаблонов.
Мастер_
СТран ица Стр аНица
I I
(шабпон) замеща lOщеrо
ЛЮбые Э"еJ.1 е li rы
•.I11aster
N
.заГЮ'nн~ rеll~ Содержимого
*.aspx
CO,r:H:)PJoI.;~J.1 of!
~ I
лIoБые Зl1емеl-ltы
Сопtеп,з .заnОЛI-I"rе","
На Месте
СоntеПIРlасеНОICiегз
ОПЯТЬ "Юб~lе
1''
I
I
I
I
;СоntепtР lасеНоldегз
со I;fЮИм
(;QAep)!(l1"'bIM ~.,•••
,-
.'.
•
С О Пlепt 1
с за""ещаI()ЩL1М
CQДерЖlolмым
С~ержимое
1'.
I
I
I
эnемеНtы
эа П Ol1НИ Jеля
pontentP lal:eHolder1
(g ••
1- _
с 3QfllещаЮЩL1М
содержимы M
r
COt1tent, Н<I lYIес
CClrтtentp lac;eHold:~,
J.
1'.- I
I I
00 """"_
Содер)!(и",ым
r< ,•
I I
ContentP laceHolder2
Cc.6cr&eHlioe
iC{ (:aдep~lYIoe
Оntе ntp la CeHClICier2
.J. 1 со """"_
Coдep)!(l1"'bIM
'7' I
I I
I I
О nяrь
Опять
~ J rllQбbjе
!l lQБ Ые
ЭnемеНJЫ
~eMe flTbl
эа ПOf1 Ни'еля
заПо,n н и rе" я т I
I I
ВР<>М ..
~ЫnOJlJie.fUfst
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
редактирования шаблона
б. Элементы Con t entPlaceHolder можно размещать в ячейках
таблицы. При выполнении ЭТИ ячейки за пол нятся
.. .1J~
Terrp~tes: 111 "
е -~
~
с <ы
iЭ
"оо
~
X~ Fi "
tm
XI~ Schema
li1
Text Fi "
!IJI
Resc....-ce Fi "
IJ
SQ.- Database
"W 'o:atL" Crnfg...-ati",
tm
DataSet -~, ~
Si l9~
шf-
~ i " Web
~
VВScr"t Fi "
,,_.
~ ~
JScr " t Fi"
~ff Fe< m
</html>
.!! Cut
1: Сору
Paste
Paste Alteгnate
'х D€~te
V~W code
Foгmat selec:tion
Fогmа1jjпg аnd VаliШtioп .. ,
Default.aspx
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Обратите внима н ие , как можно вставлять комме н тарии <% -- ... --%>
в дескрипторный код файлов ASP.NET
FirstMasterPage.aspx так
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
< сопfigшаtioп>
<system.web>
<pages theme="MyTheme" />
</system. web>
</сопfigшаtioп>
Web.Config
FirstмasterPage.aspx
м asterP age F ile ="~ IМ asterP а ges/F irstМ aster Р age .master"
AutoEventWireup =''true'' CodeF ile="FirstMasterPage.aspx.cs"
Inherits=''FirstMasterPage'' ТiI:!е= ' Тестовая стр аница содержимого " %>
Каждый контейнер <asp : Соп ten t></ asp : Соп ten t> обязательно
до лжен ссылаться на свою имеНОВQННУЮ оБЛQсть в подключенном
шаблоне в соотношении "Один к одн ому". Только ч ерез прикрепленную
имеНОВQННУЮ оБЛQсть содержимое кон тейнера может по явиться на
стр анице и именно в том месте , где эту область зарезерв ирует шаблон .
СontепtРlосеНoldег - ContentF'laceНolder 1
Привет студентам из
"именованной области1"
мастер-страницы!
Иден т ификато р ID само го кон тей нера <asp : Соn ten t> в странице
содержимого определять н еобязательно , если только мы не п ла нир уем
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
FirstмasterPage.aspx
Привет студентам
из "страницы
содержимого1 "!
DоП€ Local iпtппеt
Inherits=''FirstMasterPage'' % >
ривет студентам из
ривет студентам из
'именованной области2"
Iмасп:~р-с~тр,аниц]ы!
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
кон тектном меню шаблона команду Add Co ntent Page. При этом , если
мастер-страница имеет файл отделе нного кода * .cs, то и страницы
соде р жимо го также БУдУГ создаваться с файлами отделенного кода.
в м С""",,,в
.
110 ASP.NET
х.
, ~
Conten1:PlaceКJlder - Content?lace/-blder 1 1:
,ji CUt
IПривет студенп ~ Сору
"именованной о ~ Paste
Paste Alternate
мастер-страниц) >< Delete
''''~
\/iew Code
View Component De ~gne r
conten1:PlaceКJlder Content?lace/-b1der2
II ~ Add CmtentPaJe I
IПривет студенп Edit Image
"именованной о
show Smart Tag
~ Refi"estJ
мастер-страниц) ~ Properties
-1J~
Terrp~tes : 111 "
е
_0_
1'100 Fe< m •
',ма т
~
l'Iob uoc>r
Cm1rol
~
H T~P"9"
~
1'100 SerVCG
~
C~C
~
sty k> ShGGt
&J
с <ы
iЭ •• 1m li1 JjJ 1]
"оо X~ File XI~ Schema Т ехl File Resc...-ce Fi le SQ.- Database
r.w 'c atL " Crnfg...-ati".
1m !i]
- , ~ ~. ~ ~ ~
DataSE't
~~
Si"~ ~ i le
1'100
Fe<m
VВScrjJt File
"-' JScr " t File
Создани е баннера
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. СН"",,,В
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
. ~
резервирующий
ни жний
место
конт е йн е р
под
ContentP l aceHolde r 3 ,
нижний колонтитул, вставьте
пр имер но такой код
<strong>
Автошкола Д иалог-Сервис в целом работает без перерыва
на обед и выходных с 8 часов уг р а до 9 часов вечера!!!
</strong>
<р style=''text-align: right; союг: Blue; font-family: 'Co urier New'; font: ЬоИ italic'
< iшg ю='1МGl" runat="server" src="LI GHT.I CO" 1>
Copyright &сору 2007
</p>
<body>
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</div>
</foпn>
<!body>
Мы для наше го примера создадим 4 стра ницы соде ржимого с прос тыми
и менам и :
Первый способ
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
•
l/ШIiIIIII м.,,,
D
• .- Pogo
[!j]
_ с_
ccrn-o l
00
КТf.1.. Pogo
!i
W еЬS.п~е
~
Ck!"
lfiI
stj i< SCe" t
~
C~,
"«J I Ea~ .. ,
-
~
crn~gJ a ~I ",
~F,o,
)(]VL ХМ-
JfJJ
Schotm
~
То," Fil2
~
R о=л: о
;.
Fi:"
ij
SQ.-o..:..b=
1m
оазset -~, ~
5100 M~
I[!r"
M:N e I'Jeb
~
\1\5(r"" Не
~
,-,
~
JS'Ip ~ "е
l-Iord iof '.m
ОС::{' ~ -"'" ~ ",- ф1 jjJ
I д form for Wob {FP b"=n<
ос CaK,,1
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Второй способ
Маз te rPageFi le= " - / Маз ter Раgез / т i t l е . таз ter " - (как-бы
абсолютный адрес в пределах сайта)
Третий способ
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. СН"",,,В Про,рйммupoвtJNШ' Na ASP.NET
•
dgJ1iJ
F* Еа: V~" F.... C<1t'" ТOOI3 Нф
" а;;;::- -;,. . . . ~ :1) с:! I 'Q Seadl !li FаУClIЖ '3 flOO.a () lb- :.i ~ :.::J ~ О
AO<:t'" I.:.J r-:ttp:/!осмh:J,;I:: 1 16 1rw<ЬSitt!St5~'",щ)х
Св ердловскнй район
~1ы ОООCJШЧII8!ШМ .\ltlкcJIАншыlеe удобсТВII CBOIIM ICЛНClпам
ЛпО' '\1У'1Н' I"rтп",.,......vmт ""и""иО'" "('>...-.rtV'{''П''''- 'П ~ ""llП"" т""....-.., ~
Г гг ~ LОС~ ПI,.,ne{
содержимым.
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
< Ьг 1>
< аsр:НурегLiпk ID= ' 'Н урегLiпk2" runat="selVer" N avigate Url= "~/Sa tellite2.
< Ьг 1>
< аsр:НурегLiпk ID= ' 'Н урегLiпkЗ" runat= "selVer" N avigate Url= "~/Sа tеllitеЗ.
</td >
<td stylе='ЪасkgrОШ1d-соlог: #FFB8FF">
<asp:C ontentP lace Н о k:lег ID= "С о ntentP la се Н о lder2" runa t= "server">
Вот уже более 12 лет мы занимаемся подготовкой водителей катего
и всегда занимали первые места в сводках МР ЭО ГИБДД по качест
всегда нацелена на успех наших клиентов в сдаче эюаменов ГАИ с
получении водител ьского удостоверения.
< Ьг 1>
< Ьг 1>
Мы обеспечиваем максимальные удобства своим юшентам. ДЛЯ 3TI
воскресная и заочная формы обучения. Наши курсанты имеют возм
неограниченно пользоваться компьютерным классом. Учебные авт
заявке юшента к назначенному им месту Развивается сеть филиало
</asp:ContentPlaceHolder>
</td >
</tr>
< и stуlе='ЪасkgrОШ1d-соlог: #FFFF92">
<td colspan="2">
<asp:ContentPlaceHok:ler ID="Со пtепtРlaсеНоldегЗ" runat="server">
<s trопg> Автошкола Диалог-Сервис в целом работает без перерыва
на обед и выходных с 8 ча с ов угра до 9 часов вечера!!!
</strong>
</asp:ContentPlaceHolder>
</td >
</tr>
</table >
< р sty1e=''text-align: right; color: Blue; font-family: 'Сошiег New'; font: bold ital
< iшg ю =' 1МGl " runat="selVer" src= "LIGHT.I CO " 1>
&nbsp;Copyright © 2007< /p>
<asp:C ontentPlaceHolder ID="C ontentPlaceHold er4" runat="server">
<strong><em>BbI уж, пожалуйста, наведывайтесь к нам почаще! </е m>
</asp :ContentP IaceHolder>
</div>
</form>
<!body>
,ОС
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</html>
</asp:Content>
<asp :Со пtепt ID ="Со пtепtЗ " ContentPlaceHok:lerID= "Сопtе пtРlaс еНоk:lеrЗ" RI
< strопg>Филиал в Ленинском районе работает без перерыва на обед
часов угра до 9 часов вечера!!!
</strо пg>
</asp:Content>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</asp:Content>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<asp :Со пtепt ID ="Со пtепtl " ruпаt= "Server" Со пtепtРlaсе Н о ld ег ID="Со пtепtР I
<div stу1е=''foпt-wеight: bold; font-size: xx-large; СОloг: red; text-align: сепtег' ~
Сведения о филиале в Свердловком р айоне
</div>
</asp:Content>
</asp:Content>
<asp :Со пtепt ID ="Со пtепt4 " runat= "Server" Со пtепtРlaсе Н о ld ег ID="Со пtепtР I
</asp:Content>
страницы содержимого
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
содержимого.
Управление заголовком
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
-/МаstеrРаqеs/Тitlе.mаstеr
Первый способ
</div>
</fопn>
</body>
<lhtml>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Листинг До бавление свойства доступа ~ дес~риптору
Второй сп особ
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
страницы содержимого
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Мастер-страница без
Ite ms[ l ] ~ lМasterPagesmdel.master
баннера
Session["index"] = lstМasterPages.Selectedlndex;
De3igl vie!! does mt sц::рс:п creatr.;) or edtn;j nested master рзges . То create or edt neste::J master рзges , u:e
Sot.rce \IiEw.
J
Но мы , все-таки, рассмотрим эту возможность н а п римере мастер
страниц двух уров н ей. Мы создадим две мастер-страницы с
п оследовательным п одключением н ижне го уровня Levell к верхнему
LevelO .
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
.1J~
T""l""»> ri! о:::
llijJ
I'J.b Form •
'4мъt4
_ с_ [!j]
ccrn-o l
00
КТf.1.. Pogo
!i
W еЬS.п~е
~
Ck!"
lfiI
stj i< SCe" t
~
C~,
;.
ij
SQ.-o..:..b=
1m
оазset -~, ~
5100 M~
I[!r"
M:N e I'J eb
~
\1\5(r"" Н е
~
,-,
~
JS'Ip~ "е
l-Iord iof '"m
~
ОС::{'
-"'" ~
I д м",,/о< Р'9' fcr lМ>b Af~ l t,too<
",- ф1 jjJ
~w I Мd'MP~""" l l , ",,,'M
L~ : I V isuз l С' iJ Г Р!асе с сОэ n "1R~ fi le
Г ... юm't?rr""J"
< asp :С о ntent ID= "С о ntentLeve lO" С ontentP Ia се Н о ld erID= "С о ntentP Lзсе Но ld еl
<table width="100%" s tуlе ='Ъас kgrоuпd -соloг: #ссfЮО" border="l ">
<tr>
<td colspan="2">
<h2>
Мастер-страница уровня Leve lO - верхнего уровня
<1h2>
</td>
</tr>
<tr>
<td style=''width: 200рх''>
<strong>3Aecb мож но р асполож и т ь элеме н ты навигации </s trопg:::
</td>
<td stуlе='Ъ асk grоuпd -со loг : #ccffff'>
<asp :ContentP LзсеНоldег ID="ContentP IaceHolderLevelO" runat="sel
</asp :Conte ntP Lз се Н о lder>
</td>
</tr>
</table>
</asp:Content>
<%@ Page Language="C#" Ма stегРа gеFilе ="~ lМа stе гР аgе L е vеЮ . ma stЕ
•
Мастер-страница уровня
Level1 - наибольшей глубины.
Ее можно использовать как
~
верхнии колонтитул
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
в Design нельзя!
конфигурационный файл
содержимого
Наши перспективы
-
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
состояния на ЮIИенте.
Состояние вида
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Упражн ение 1
в этом при мере мы создадим qюрму С интерфейс ными элеме нта ми, в
которых отключим ав томатич еское сохранение состояния вида, а БУдем
его сохранять и восстанавливать вручную. Интерфе йсны е элеме н ты мы
разместим в серверной табл иц е и БУдем использовать р екурс ивн ую
логику для опроса всех ее до черни х элементов, размещенных в
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
.1J~
T...-rpl ..,... Гf! ;:;:
~ ~ ~ ~
АЧ' r.ET \',00 ASP J-ET W3!J ж-sma l Vloo ЕrrщWeIJ
S ib SOfYEO S i'" stoc"" K~ S i.,
[:'-0"'''' .. ,
~ D [!j]
_ с_ 00 !i ~
VI<b Form м", ,..- Р"9" КТf.1.. " "9" Web S• .., ~e С",,,
ccrn-o l
CiiJ
C~,
.
Fi:"
ij
SQ.- о..:..ь=
1m
Dазset -~, ~
5Ite М"!)
1J]r"с
M: N e VIOO
~
\'В5C r "" F(e
lf.jJ
,-,
~
J5CfjX ""
I-I.rde.. ' ..m
• ~3апустите командой
Website/ASP.NET Со пfigшаtioп страницу
WAT (Web Site Administratian Тай/) и выполните команду Application
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
и за головок
<table ю =' ТаЫе l " width="100%" runat="server" s tуlе=''tехt- аligп: left; wi(
<tr>
<td style=''width: 2 00р х' '>
</td >
<td >
</td >
</tr>
<tr>
<td style=''width: 2 00р х' '>
</td >
<td >
</td >
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</tr>
<tr>
<td sty1e=''width: 2 00р х' '>
</td >
<td >
</td >
</tr>
<tr>
<td style=''width: 2 00р х' '>
</td >
<td >
</td >
</tr>
<tr>
<td sty1e=''width: 2 00р х' '>
</td >
<td >
</td >
</tr>
<tr>
<td style=''width: 2 00р х' '>
</td >
<td >
</td >
</tr>
</table>
Листинг
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
будет та ки м
ViewStateTest,aspx
Заполните анкету
.~
~aHMeHOKaHHe ~ ;значенне
~МЯ: Ir
iПароль: Ir
IE Отправить IE Сохранить • Восстановить
</tr>
<tr>
<td style=''width: 200рх''>
Имя: </td >
<td >
<asp :TextBox ID='TextBoxl" ruпаt= "server''></asp TextBox></td:
</tr>
<tr>
<td style=''width: 200рх''>
Учетный HOMep:</td >
<td >
<asp TextBox ID='TextBox2" ruпаt= "server''></asp TextBox></td:
</tr>
<tr>
<td style=''width: 200рх''>
Возраст:</td >
<td >
<asp :TextBox ID='ТехtВохЗ" ruпаt= "server''></asp TextBox></td:
</tr>
<tr>
<td style=''width: 200рх''>
E-mail:</td >
<td >
<asp :TextBox ID='TextBox4" ruпаt= "server''></asp :TextBox></td:
</tr>
<tr>
<td style=''width: 200рх''>
Пароль:</td >
<td >
<asp :TextBox ID='TextBox5" ruпаt= "server''></asp :TextBox></td:
</tr>
</table>
< Ьг 1>
<aspButton ID="cmdS ubmit" runat="server" Теxt::::: "От пр авит ь " 1>
&пЬsр;&пЬsр;&пЬsр;
<aspButton ID="cmdSave" nmat="server" Техt="Сохранить" 1>
&пЬsр;&пЬsр;&пЬsр;
< аsр:Вuttоп ID="cmdRestore" runat="server" Теxt=''Восстановить'' 1>
</div>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</form>
<!body>
</html>
using System;
using System.Data;
using Sуstеm.Сопfigurаtiоп;
using Sуstеm.Соllесtiопs;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using Sуstеm.WеЬ.U I .WеЬСопtrоls;
using Sуstеm.WеЬ.U I .WеЬСопtrоls.WеЬРаrts;
using Sуstеm.WеЬ.U I .НtmlСопtгоls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
if (control is TextBox)
{
// Убеждаемся , что есть в словаре
if (t:his.VIewState[controLID] != null)
{
// Приводим типы и восстанавливаем
((TextВox)control). Text = (striпg)this. ViewS tate[ controLID];
)
}
Упражнение 2
using System;
using System.Data;
using Systеm.Со пfigша tiоп;
using System.Collections;
using System. Web;
using System. Web.Security;
using System.Web.UI;
using System. Web.UI. WebControls;
using System.Web.UI. WebControls.WebParts;
using System. Web.UI.HtmlControls;
(
11 Выбираем элементы только текстовых полей и сохраняем
11 их содержимое в промежугочном объекте , используя
11 в качестве Юlюча идентификатор элемента
if (сопио! is TextВox)
(
11 3начения полей перед сохранением на всякий случай
11 URL- ко.цируем как поступившие от ненадежного источника
11 (предохраняемся от возможного ввода зловредных СКРИПТОЕ
11 Чтобы система не реагировала на угловые скобки в полях вв
11 нужно в директиву @ Page интерфейсной части вставить ат]
11 ValidateRequest="false" или в секцию
11 <pages validateRequest="false"> файла web.config
11 Внимание!!! ХМL~файл web.config чувствителен к регистру (
string text = «TextВox)control).Text;
text = Раgе.Sеrveг.нtmlEпсоdе(tеxt);
11 То же самое ...
11 text = НttрUtilitу.нtmlEпсоdе(tеxt);
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
}
}
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
1~~:;ti?~h;;ttp~:~1/оХ
~аIГюst: 1160!ViewStateTest!VieWStateobjects.aspx
Заполните анкету
Нанменованне Значенне
Имя: ICHeTKOB ВМ.
ЗначеlШЯ словаря
Key=TextВox4, Va1ue=Sandт77@List.ru
Key=TextВox3, Va1ue=58 < 17 лэт>
Key=TextВox5, Va1ue=CaТYPH почти не видеи
Key=TextВox2, Va1ue=12345
Key=TextВoxl, Vа1uе=Сиетков В.М.
Оопе
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Упражнение 3
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ViewStateList.aspx
• ~Этому КОдУ В режиме пр оект ирования соответствует
следующее пр едставление
/ ViewStateList,aspx [ . . .- х
~
Отключение состояния
вида в списках
[U пЬоuпd
ru nbound 3
IEJ Отправить J
• IJ$Двойным щелчком на свободн ом месте страницы в режи ме
Design создайте блок скри птов с за готовкой обработчика
Page Load ()
• г;.:;=поместите в обработчи к Page Load () код заполнения
списков видимым содержи мым, который будет срабатыв ат ь пр и
каждом запросе стра ниц ы
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
СПИСlCов
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Co ntrol Тгее
ViewSl
Render S.
Сопtrоl Size Bytes /"
Туре . / d' Ву'е
Unique ID ( те u mg Id
hild (ехс u
с геп) hiId
с "
_ Page ASP. viewstatelist_aspx 910866 О
cd02 System. WеЬ.UI.LitегаIСопtrоl 50 О
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
<script nmat="server''>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<select size="4 " паmе ="ListВо х l " id= ' 1.istВ ox l " stуlе=' 'hеight:200рх;wюth:1 S0I
<option selected="se lected" vаluе= "Опция 1 "> Опция 1 <Ioption>
<option vаluе="О п ц ия 2' '> Опция 2<loption>
<option vаluе= "Опция 3''> Опция 3<loption>
</select>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
информацию.
Упражнение 4
if (!this.lsPostBack)
{
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Вставляем в ОТЮJик
Response.Write("<b > CTpoкa состояния в ф:Jрмате ASCII:</b:
Resp о nsе. BinaryWrite( asc п);
<lhead>
<body>
<form id ="forml " nшat="sе lVе г ''>
</fопn>
</bod y>
<lhtml>
Приветвсемlll
Скрытые поля
Упражнение 5
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
// Или то же самое
// count = int.Parse(countRequest.Value) + 1;
}
соuпtRеquеst.Vаluе = count.ToStringO;
}
Строки запроса
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Упражнение б
<h1 style="colo r: Rеd' '> Введите учетную запись < lhl >
Sо шсеQuегyS tring.аsрх
Элеме нт Свойство
/ SourceQueryString.aspx I ~ х!
.=J
Введите учетную запись
I fI~ [ F
I ~аl)QЛЬ :!I F I
I
ltJ Отправить I
• ~ ереведи те стран ицу в режим Dе s igп и двойным щел чком на
элем е нте Button l создай те для н е го обработчик. Заполни те
об р аботчи к следУЮЩИМ кодом
,СО
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</tr>
</table>
</div>
</form>
<!body>
</html>
SоurсеQuеrуStriпg.аsрх
<script nmat="server''>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
,ее
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
где
Упражнение 7
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
/ SourcePostBackl.aspx 1 ТХ
Сотудент
• POStB8CkUrl 1· Sеrvег.Тгапsfег()
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
stгiпg text;
text = IstPost.Se)ectedItem.Text;
// Различаем кнопки
Вuttоп btn = (Button)sender;
if (Stгiпg.Соmpаге(Ьtп.Техt, ''PostBackUrl'', true) != О)
{
if (Stгiпg.Соmpаге(tехt, "С туден т", true) == О)
,СО
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
if (t:his.PreviousPage == null)
{
text += "С траница запущена напрямую < lhl >";
IabeL Text = text;
геtшп;
if (t:his.PreviousPage.lsCrossPagePostВack)
text += "< ti> Обратная отсылка инициир ована свойством Р(
else
text += "< ti> Обратная отсылка инициир ована методом SeГ\o
text += "</UI>";
LзЬеL Text = text;
}
</script>
CrossPageStudent.aspx
• ~ олучите ко пи ю ст р аницы CrossPageStudent.aspx п од именем
CrossPageLecturer . asp x
(ij Favocites
Методом межстраничной
обратной отсылки
получены данные
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
единственное значение .
просроченную дату
Упражнение 8
<script nmat="server''>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
11 cookie.Expires = DateTune.Now.AddYears(l);
this. Respo nsе. С 00 k ies.Add (соо kie );
}
</div>
</foпn>
<!body>
<lhtml>
и де н тичную первой .
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
!±I Favorites
http:/~осаlrюst: 1157 j\NebSite6x/CookiesPage2.aspx
Испытание Cookies
ВвеДFПе ФИО: ICHeTKOB В.М.
Удалить I
Перейти к CookiesPage 1.аврх
Те~запрос: 20
Local in1Janet
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
межстраничной инqюрмации.
Упражнение 9
следУЮЩИМ кодом
<script nmat="server''>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Кнопка Submit
Button suЬшit = пеw ВинопО;
fo пnl . С о пtrо Is.Add( s uЬ шit);
submit.Text:= "О тправить ";
// Горизонтальная ли ния
fопnl.Сопtrоls.Аdd( пеw НtrnlGепегk:Сопtrоl( "hr"»;
if (!this. I sPostВack)
(
// Проверяем функциональность броузера на nодцержку Cookies
CookiesSupportedFlag:= this.Request.Browser. Cookies;
if (CookiesSupportedFlag)
(
// Для дополнительной проверки пробуем отправить cookie
this.Rеsропsе.Сооkiеs[''tшр''].Vаluе := S tгiпg.Еmрty;
)
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Сооkiе ~ набору можно назначить обл а сть видимо сти в пределах саЙта.
В этом случае броузер будет следить за тем , при работе с какими
страницами отправлять на ни х куки , а на какие не отправлять. Так,
например , если кук " с1 i сk s" при записи пометить
/ (
Сохранение данных в состоянии сеанса
Член Описание
• о f f = О ~ сеанс не используется
• InProc = 1 ~данныесеансахранятсяв
памяти домена
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Определяется значениями
перечисления
• UseU ri = О - никогда не
использовать сооkiе-наборь
включать идентификатор
сеанса в URL (в файле
wеЬ.сопfig допускаются
варианты синтаксиса:
• UseCookies = 1 - всегд
использовать сооkiе-наборь
Для неподцерживающих
сооkiе-наборы броузеров
Cookieless
да нные сеанса будуг теряты
по скол ьку идентификатор
сеанса возвращаться на cepl
н е будет
• AutoDetect = 2 -
наиболее надежный режим ,
котором сервер сам определ
возможности броузера по
подцержке куков и
автоматически применяет
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
потенциальной
функциональности броуэер(
п о п одцержке сооkiе- н аборс
но без учета возможн ости
фактического ОТЮJючения 31
функциональности
пользователем
SessionStateMode.
указывающее способ хранения
данных сеанса:
• о f f = О - указывает, что
сеа н с не задействуется для
хранения данных. Такой pe>t
может существенно увеЛИЧ I
• StateServer = 2- сеа l
хранится в специальной
службе Windows под назван ]
нестандартного постаВЩИКе
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
злонамеренный пользователь
Упражнение 10
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</configuration>
int clk:ks = 1;
const int тахСо!=2;
Htmrrable table;
};
if (!IsPostВack)
{
// П олучаем всю информацию о параметрах конфигурации
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Корректируем таблицу
«Н unIГab!eC е ll) Р age .F ind С о пtго ~"S е55 io nID')). 'пneгН tnnI =
" " + trus.Session.SessionID;
«Н unIГab!eC е ll) Р age .F ind С о пtго ~"numReq ue5t')). 'nлег Н tnnI =
" " + clicks.ToStringO;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
II Кнопка Submit
Вuttоп submit := new ВuttопО;
forml. С о ntro Is. Add(sub mit);
submit.Text:= "О тправить ";
}
</script>
Отправить
ГГГ ~ LОС3IltПfiеt
Упражнение 11
11 Создаем гиnерссылку
НурегLiпk link = new HyperLinkO;
form!. С о ntгo ~. Add(link);
link.NavigateUr! = "~/AppticationState2.aspx";
link.Text := ' 'На другую ст р аницу. .. ";
}
</script>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
гг Г ~ Loc" in1Ianet
приложения
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Упражнение 12
// Список файлов
private static string[J fileList;// Базовое поле
// Общедоступное статичесюе свойство для обертки базового п
риыic static string[] FileList
{
get
{
// За пол нить список только при первом за пр осе
if (fileList == null)
(
fileList = System. IO .Directory.GetFiles(
Н ttpC onte xt. С urrent. Req uest. Р hysicalAp р licatio пР ath);
}
геtшп fileList;
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
}
}
// Число посещений
private static int visit = 1;// Базовое поле
// Общедоступное статическое свойство дл я обертки базового п
риыic static int Visit
{
get { return visit; }
set
{
lock (typeof(int))// Контейнер обеспечения синхронизации r
{
visit = value ;
}
}
}
</script>
;О,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Число посещений
Labe! visit = new Label();
form1. С о пtго ls. Add( vis it);
int clicks = MyAppClass.VlSit;
visit.Text = "< Ь >Количество посещений: "
+ clicks.ToStringO + "</Ь>";
MyAppClass.Visit = ++clicks;
// Горизонтальная черта
foгm1. С опtгоls.Аdd(пеw HtmlGenericContro~ ' 'hr ') );
string str;
//int pos = file.LastIndexOf(@'\');
//str = file.Sub string(pos + 1);
// То же самое
str = System.IO.Path.GetFileName(file);
builder.Append("<li>" + str + "</li>');
}
build er. Ар pend("</o 1> ',;
// Горизонтальная черта
foгm1. С опtгоls.Аdd(пеw HtmlGenericContro~ ' 'hr ') );
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Ad::tess f> Go
Использование статических
~
Количество посещений: 7
1. IsCookiesSupported.aspx
2. ViewSta1eList.aspx
3. DisplayViewSta1e.aspx
4. GlоЬШ.asах
5. НiddenFieldTest.aspx
Отправить
Ще.тш:айте на КНОIШе и
наб.rnoдайте счетчик посещеlВlЙ
Local in1Y.rtet
~T I@) ГJ I
С не т'0$ (
-
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Основы ADO.NET
Поставщики данны х. Класс Соnnесtloп. Строка соединения .
Подключение к БД и тестирование соединения . Организация пула
соединений. Классы Comrrnnd и DataReader. Метод
SqК::оmmaпd . ЕхесutеRеаdегО.Обработка одного результирующего набо р а
данных SqlDataReader. Обработка множественного результирующего
на бора данных SqlDataReader. Метод SqlCommand.ExecuteScalarO.MeToA
SqК::оmmaпd . ЕхесutеNопQuегу().Атаки на базу данных внедрением SQL.
Вызов хранимых проц едур. Тра н закции . Точки сохранения для отката
транзакции. Фабрики поставщиков.
Поставщики данных
источникам данных
2. Coтmand - используется для выполнения команд SQL и
хранимых процедур
з. DataReader - предоставляет быстрый доступ только для чтения
к извлеченным данным
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
1. SQL Server
Поставщик
2. OLE DB
Поставщик
з. Поставщик Oracle
4. Поставщик ODBC
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
П риложение .NET
\
I
Неизменяемый уровень
I
1
f Н абор данн ых DataSet
I
I Поста вщ ик
SQL Server
Поставщ ик
OLEDB
Поста вщ ик
Oracle
I
П остав щи !\
ОDВС
I
~
- - - - - -- - -- - -I
Источник данных (БД)
Та бл и ца I Таблица I • • • Табл иц а
Кла сс ы ADO .NET группирую тся в н ескол ьки х простр анства х имен:
User DSN I Sys1em DSN I File DSN Drivers ITrscing l iXmnection Pooling I Мои1 1
ОD8С Drivвrs Ihal ше inslalled оп уош syз1ет
Yersion Сот м
Driver da Microsoft рага arqurvos te:.1o ("'М; " .csv) 4.00.6200.00 Мiсrоsоft Corporali ,
Driver do Microsoft Ассезз ("'.mdb) 4.00.6200.00 Microsoft Corporati,
Driver do Microsoft d8 ase ("'.dbf) 4.00.6200.00 Microsoft Corporali ,
Driver do Microsoft Exc:el("'.xls) 4.00.6200.00 Microsoft Corporali ,
Driver do Microsoft Paradox r,db) 4,00,6200,00 Microsoft Corporati ,
Driver рша о Microsoft Yisusl FoxPro 6.01.8630.01 Microsoft Corporali ,
Microsoft Access Driver (".mdb) 4,00,6200,00 Microsoft Corporati ,
Microsoft Access-Treiber (".mdb) 4.006200.00 Microsoft Corporali ,
Microsoft dB~se Driver (*,db~ 4,00,6200,00 Microsoft Corporati ,
Microsoft dBase YFP Drrver (".db~ 6.01.8630.01
'" '~ ~ ~"" O ~ ~~T .~;h~ ."'rJ ,"," AnnC'-'"n ~ ~::~~~~~ ~~~~i11
•
Аn ОDВС driver allows ODBC-еп аbIе d programs to get inlorma1ion Irom
ОDВС data зошсез. То install пе .... drivers, use the drivers setup program
Класс Connection
Строка соединения
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Используется
п оставщик O LE
DВдля
П ОДЮlюче ни я к БД
string connectionSt ring = " Da t а
Sa l es типа
Source=localhost ; Initial
O racle ч ерез
Catalog:Sales ;" + " user
драйвер MS DAORA
i d=sa ; password= ; Provider=MSDAORA ";
OLE DB с
п равам и
адм и нистратора и
п устым п аролем
П ОДЮlюч е н ие к БД
Access . С и мвол string connectionSt ring =
"@" требуетот " Prov i der=Microsoft . Je t.OLEDB.4 . 0 ;"
ком пи лятора @" Data
интер п рет и ровать Source=C : \DataSources\Northwind . mdb "
строку буквал ьн о
striпg connectionString = WеЬ Со пfigurа tЮпМапа gе г. Со nnес tioпS tгings [ ''N orthw
конфигурационного файла
П осле установки
SQL Server 2005 н ужн о убед ит ься , что служба
SQLServerAgent ВЮlюч ен а в р ежим Auto . ЭТО мож н о сделат ь ч ерез Пускl
НастройкаlПан ель управле ни я/Адми н истр и рова н ие/Службы
с Пуск
" ••
См ,.. Вру'fffЮ LOCi
пауgа Работает Вру'fffЮ LOCi
Re" Р азре шае" Вру'fffЮ LOCi
Е. 5зvе::; ilst, , Вру о..ную Сос<
Работает Аюо Сос<
I
:E:~~:sru~cIo О,. Pl!
ProYi~ Вру 'fffЮ LOCi
d"
tFCfm 5,. Работает Авто LOCi
rnt;jpr I
~
с вой ств
С п особ 1
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
I...-rpl""'"
[;; о:::
•
lImIiIIIII
D
м.,,:е- ""9"
[!j]
_ с_
CCn'rol
~
КТf.1.. ""9"
!jj]
W еЬS.п~е
~
С",,,
t!JI
stj i< SCe" t
~
C~,
;.
ij
SQ.- о..:..Ь=
IНJ
-~, i.I\I I[!r" ~ ~
lf.jJ
Dазset 5Im M~ M:tJl:e I'JOO \1\5(r"" Не е _,
J5Cf\J~ ""
I-I.rde.. '.т
[j::l"
Iд form for Wob 4F\'ЬЖn'
~
-"'" ~. ~ ф1 jjJ
try
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
{
с оп.О р епО;
IblInfo.Text = "< Ь > Верс и я cepBepa:<Ib> "+ con.ServerVersion;
IblInfo.Text += "< Ь г />< Ь > Соедин е ни е: < Ib> "+ con.State.ToS t
}
catch(Exception е гг)
{
IblInfo.Text = "< Ь > О ши бка чтен и я базы данн ы х.<Ib >";
IblInfo.Text += err.M essage;
}
finа Пу
{
con.CloseO;
IblInfo.Text += "< Ь г />< Ь > Тепе р ь соедине ни е: < Ib> ";
IblInfo.Text += con.State.ToS tringO;
}
}
</script>
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
''Data Sошсе=lосаlhоst;
Iпitia l Саtаlоg=Nоrthwiпd;
user id=sa; password=;" 1>
</соппесtioп S triпgs >
<system.web >
<compilation debug=''true''l>
</system. web >
</со nfigшаtiоп>
С по соб 2
using (соп)
{
соп.ОрепО;
IblInfo.Text = "< Ь > Версия сервера: < /Ь > "+ con.ServerVersion;
IblInfo.Text += "< Ьг />< Ь > Соеди н е ни е: < /Ь> " + con.State.ToSt
}
Параметр Описание
Требование вь
SQL-оператор
свойстве
System . Data . CommandType . Te x t Command . Co
Установлено п
в свойстве MG
Command . Co
Требование вь
хранимую про!
System . Data . CommandType . StoredProcedure
указанную в СЕ
Command . Co
Требование из
записи из табл
указанной в св
Command . Co
System . Data . CommandType . TableDi re c t
Не подцеРЖИВ i
поставщиком 1-
Server
using (соп)
{
// Получить соединение из пула (если есть)
// или создать пул с 10 соединениями (если нет)
соп.ОрепО;
IblInfo.Text = "< Ь > Соединение: < /Ь > " + con.State.ToStringO;
IblIпfо.Техt += con.State.ToStrmgO;
}
</script>
Соединение: Ореп
Соединение: Closed
ш
в.м. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
Метод SqlCommand.ExecuteReaderO
строкой. Возвращает fa l ~
чтении последней строки
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
да нны х
определяемой свойством
SqlDataReader . Fiel
Возвращает значение поля
Sq l DаtаRеаdеr . Gе t Iп t З2( i пt)
типа п о индексу столбца
следУЮщего набора
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
using (со п)
{
// Открыли соединение
со п.ОрепО;
ш
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg (соп)
{
11 Открыли соединение
соп.ОрепО;
Н абор: 1
• CU$!omerlD : ALFKI Co mpanyN 8me: Arreds FLltO!1<:i 5te Cont8ctName: Мo'"i a м ооГ5
• Cu ~tom.,ID : ANAТP Сотр.nyN~т .: А па TГ\Jj lo Е Гl1J "' ООаООБУ
h&lados ContactN. m.: А п а Tr Lj iro
• CU$tomerlD : A NТW Са тр~ny Н~те : A rtoГlo MDrooO Taql eгJ ~ Co nt~ctN eme: At1m o ИJгеm
• CU$!amtrlD : AROUT Camp anyNamt : 1110000 100 HDrn Cantac!Namt: Th:xnas Наа/
• CU$tomerlD: Ef:RGS Co mp8nyN8me : 8е гфnJs snabbkYp Cont. ctN8me : Cm stl na 8e г~
Н абор: 2
• Suppli. ,ID: СотрanуН.т. : Emt i~ L i ~ i ds ContactN. m.: Ch " lot1e CDOpe ,
• Suppl ierlD : 2 Со тР8nYН8те : New Orleaгrs C~JJ n De\ g гt5Co nt8ctN8me : Sh "" ',,,~ ВJ ri<",
• Suppllt ,lD: 3 Co mpanyNamt: (.(a гкtrl a K~ Ц > НоГГЮS I~аd Cant~ctNam t: R8<;ina ИJ ГР ho.'
• Suppl ierlD:.4 Co mp8nyN8me : т щ.о Т гм"" C on l~c tN8m e : YOsh l Na gase
• Suppll t rlD : 5 Co mpanyNamt : Co orx>r31iva de OU 8 W S 'Las С Ю 8 G ' С опt ас!Nаm t : M lon io dol VE> :o S аж EXtа
us iпg (соп)
{
// Открыли соединение
соп.ОрепО;
Grandma
Rеgiпa Sales 707 Апп
з КеПу" М
Мшр hу Representative Oxford Rd. АгЬ о г
Homestead
9-8
Marketing Sekimai
4 Tokyo Traders Yoshi. N agase М
anager М usas hin0- Tokyo
shi
Cooperativa de А пtоniо deJ
Export СаПе del
5 Quesos 'Las Valle Oviedo k
Administrator Rosal4
Cabras' Saaved ra
Метод SqlCommand.ExecuteScalarO
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using (со п)
{
// Открыли соединение
со п.ОрепО;
<script nmat="server''>
try
(
соп.ОрепО;
int геССОШlt = сmd.ЕхеcutеNопQuеry();
Ibllnfo.Text = string.Format("<b> Удалено записей:<!Ь > {О} ", гесСоun
}
catch(S ystem.Data. SqlC lient. SqlException еп)
{
Ibllnfo.Text = string.Format("< Ь>Ошибка удаления: < !Ь> {О}", еп.Ме~
}
finally
{
con.CloseO;
}
}
</script>
Очень часто возникает необходимо сть дать поль зователю возможно сть
самом у сформировать строку S QL-запроса в поле ввода. Если строка
запроса соде р жит ошибки , правильную обработку которых разработчик
не пр едусмотр ел, то система реагирует вы дачей сообщения с
ПРОСТОд.УШНо- доверительным анализом ошибки , из которого можно
узнат ь сведения о структуре и содержании дан ны х. Эт им пользуются
злоумышленники , которые на мере нно вносят в S QL-запрос хитрые
некорректности , что бы попытаться уз нать о да нных больше, чем
планирует разраб отчик.
Введите Ш поль.зователя:
P\LFKI ш Получить
using (соп)
{
// Открыли соединение
соп.ОрепО;
< Ьг 1>
<asp:GridView ID="GridViewl " runat="server">
</asp:GridView>
</div>
</fопn>
<!body>
<lhtml>
Введите ID ПОПЬЗ0ватеПR:
IALFKI I ПО"!,"ТЬ
При значен ии текстового п оля ALFKI вычи сле нный SQL-опе р атор
будет иметь тако й вид:
string sq l =
"SELECT Orders.CustomerID, Orders.OrderID, COUNT(UnitPrice) AS Itel
+ "SUМ(UnitPrice * Quantity) AS Total FROM Orders "
+ '1NNER JOIN[Oгdeг Details] "
+ "ON Orders.OrderID = [Order Details].OrderID"
+ 'WHERE Orders.CustomerID = 'ALFKI ' "
+ "GROUP ВУ Orders.OrderID, Orders.CustomerID";
Листинг . Строка SQL-запроса с учетом планируемого значения
текстового поля
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
striпgsq l =
"SELECT Orders.CustomerID, Orders.OrderID, COUNT(UnitPrice) AS Itel
+ "SUМ(U nitPrice * Quantity) AS Total FROM Orders "
+ '1NNER Ю!N[Огdег Detai!s] "
+ "ON Orders.OrderID = [Order Details].OrderID "
+ 'WHERE Orders.CustomerID = 'ALFKI ' OR '1' = '1'"
+ "GROUP ВУ Orders.OrderID, Orders.CustomerID";
Листинг . Строка SQL - запроса с учетом фактического значения
текстового поля
Введите ID ПОПЬЗ0ватеПR:
IALFKI" О П "1" - "1 ПОЛ\,,4L1ТЬ
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
С инта ксис параметрuзова н ных команд сле гка отл и чается у разных
поставщиков данных . Так, поставщик SQ L SelVer пр едусматривает
именованные заполнители с уникальными им е н ами. У поставщика OLE
DB спецификаторы являются вопросами, а п орядок следования
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
спецификаторов .
cmd.Parameters.Add("@CustomID", TextBoxl.Text);
using (сап)
{
II Открыли соединение
соп.ОрепО;
</fonn>
</body>
<lhtml>
try
(
string sq l ==
"CREAТE PROCEDURE InsertEmployee"
+ "@Tn:.leOfCourtesy varchar(25),"
+ "@ LastName varchar(20),"
+ "@FirstName varchar(10),"
+ "@Emp loyeeID int OUТPUT"
+ "AS"
+ '1NSERT INTO Emp loyees "
+ "(1ideOfCourtesy, LastName, FirstName, Hh"eDate) "
+ 'VALUES(@1ideOfCourtesy, @ LastName, @FirstNаше, GEmAT
+ "SET@Employee ID = @@IDENТIТY";
Systеm D а tа.Sqk:liепt.Sq!Соmma пd cmd::::
new System.Data.Sqk: lient.Sq ICommaOO(sqL соп);
со п .Оре пО;
сmd .ЕхеcutеNопQuеry();
}
catch (Systе m.Dа tа.Sq!Сliепt .SqlEхсер tiоп епо г)
(
)
finally
(
con.CloseO;
)
}
(
11 Извлекли строку соединения из web.config
striпg соnnесtStгiпg = S ystem. WеЬ.СопfigurаtЮп. WebConfigurationМanagE
С о nnеспо nS tгiпgs[''N оrthwiпd "]. С onnectio nS tгiпg;
usiпg (соп)
(
11 Открыли соединение
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
соп.ОрепО;
11 Выполняем команду
int геССОШlt = cmd.ExecuteNonQuery();
1b1Info.Text = string.Format("< Ь>Вставлено записей:<!Ь > { О} < Ьг 1>",
11 Получить вновь сгенерированный идентификатор
int empID = (int)сшd.Рагаmetеrs["@ЕmplоуееID"].Vаluе;
1b1Info.Text += ''Новый и де нтификатор: " + empID.ToStringO;
)
11 Соед инение закрыл ось автоматически
}
</script>
<html xmlns="httр://www.wЗ.огgl1999/xhtml">
<head id=''Неаdl'' nmat="server">
<title>Untitled Page</tide >
<lhead >
<body>
< fопn ю="fопnl" runat="server''>
Введите титул:< аsр:ТехtВох ID=''tide'' runat= "server">cTYAeHT</asp:Tex
Введите имя: < аsр:ТеxtВох ID="firstName" ruпаt="sеrvег' '> Иван </аsр:Т(
Введите фамилию: < аsр:ТеxtВох ID=''1astName'' runаt="sеrvег"> Петров
<asp:Label ID= "lb lInfo" runat= "server" 1>
<br 1>
<br 1>
<aspButton ID="AddEmp loyee" runat= "server" Теxt="Добавить служащ
OnClick="AddEmployee_Click" 1>
<asp:LinkButton ID='Ъ tnRеsuh" runat="server"
PostBac k U rl="~ fГestDa ta Reader.asp х''> П о казать сп и сок< 1asp :LinkB l
</foпn>
<!body>
<lhtml>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Транзакции
// Начать транзакцию
иап = con.BeginTransactionO;
II Выдать результат
IblInfo.Text = "Д обавлены д ве записи!<Ьг 1>";
IblInfo.Text += "Общее число записей " + recCount;
}
catch II Откат при любом ИСЮIючении
{
IblInfo.Text = ' Транзакция отменена!";
tran.RollbackO;
}
finally II Обязательное завершение
{
II Закрыть соединение по · любому
con.CloseO;
}
}
</script>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
// Начать транзакцию
tran = соп.ВеgiпТгапsасtioпО;
catch // Откат
(
// Откатить частично
tr ап. Ro lIback("Ziborov'');
// Выдать результат
IblInfo.Text = "Д обавлена одна заnись!<Ьг />";
IblInfo.Text += "Общее число записей " + recCount;
}
finally // Обязательное завершение
{
// Закрыть соединение nо · любому
con.CloseO;
}
}
</script>
Фабрики поставщиков
< сопfigшаtioп>
<connectionStrmgs>
<add name=''Northwind '' connectionString= ''Data Sошсе= lо саllюst;
Initial Catalog=Northwind ; user id=sa; password= ;"/>
</cormectionStrings>
<system.data>
<DbProviderFactories>
<add name= ''S qIC~ent Data Provider" invariant= "System.Data.S qIClient"
type="System Data.Sq IС Iient.Sq IС IientF actory" />
<add name= "Odbc Data Provider" invariant= "System.Data.Odbc"
typ e="SystemData.Odbc.OdbcFactory" />
<add name= "OleDb Data Provider" invariant= "SystemData.01eDb "
typ e="SystemData.OleDb.OleDbFactory" />
<add name=' 'OracleClient Data РгоvЮег" invariant="System.Data.OracleC
typ e="SystemData.Orac leClient.Orac1eClientFactory" />
<lDbProviderFactories>
</system.data>
<system.web >
<compilatio n debug= ''true''/>
</system. web>
</сопfigшаtioп>
Обобщенный кл асс
'"
в.м. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
использованием фабрик
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
< сопfigшапоп>
< соnпеспопStrings >
<add name=''N orthwiпd" соnпеспопStгiпg="Dа tа Sошсе=lоса:
Iпitial Саtаlоg=Nоrthwiпd; user id=sa; password=;"/>
</соппесtioпS triпgs >
< аррSеttiпgs >
<add key= "factory" Vallle="System.Data. SqIClient" />
<add key= "employeeQllery" vallle= ''SELECT >1< FROM Emplo
</аррSеttiпgs >
<system.web >
<compilation debllg=''true''/>
</system. web >
</соnfigшапоп>
обобщенного хода
usiпg (сап)
{
// Открыли соединение
соп.ОрепО;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
~T I@) ГJ I
С не т'0$ (
-
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'-......
Реализуем этот простой диза йн в непростом примере . Разработаем
страницу, в которой БУдем работать с таблицей Emp l oyees учеб н ой
базы данных Northwind .
~ ~ ~ ~
A'Pi'ET~ дSP , OET ~ Pe<x", II'J eb Errpty Web
S ii> s....t. S i.. st;o:", к< S i.,
Se:>fchOn l re
I v~u" CI
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
string sq 11 =
"CREAТE PRO CEDURE I пsегtEшр юуее "
+ "@ ЕшрюуееID int ОUТPИТ,"
+ "@ FirstNаше varchar(10),"
+ "@ LastName varchar(20),"
+ "@ ТrtlеОfCоuпеsу varchar(25) "
+ "AS "
+ '1NSERT INTO Ешрlоуее s"
+ "(ТitleOfCourtesy, LastName, FirstNа ше, HireDate)"
+ ' VALUES(@ ТitleOfCourtesy, @ Lа stNа ше, @ FirstNаше, GЕШД
+ ''SET @ EmployeeID = @@ IDE NТlТY";
// Удале ни е за писи
string sq 12 =
"CREAТE PRO CEDURE DeleteEmployee "
+ "@ ЕшрюуееID int "
+ "AS "
+ ' 'DELEТE FROM Ешрloуееs WHERE Ешр lоуее ID = @ Employee
// Обновление за писи
string sq IЗ =
"C REAТE PRO CEDURE Uр dаtеЕшрlоуее "
+ "@ ЕшрloуееID int, "
+ "@ FirstNа ше varchar(10),"
+ "@ LastName varchar(20),"
+ "@ ТrtlеОfCоuпе sу УагсЬаг(25) "
+ "AS "
+ 'UPDAТE Ешрlоуееs "
+ ''SET ''
+ ''FirstName = @FirstName,"
+ ' 1.а stNа ше = @ LastName,"
+ ' ТitleОfCошtеsу = @ ТitleOfCourtesy "
+ 'W HERE ЕшрlоуееID = @ЕшрloуееID ";
// Выбрать все
string sq 14 =
"C REAТE PRO CEDURE GetAllEmployees "
+ "AS "
+ ''SELECT ЕшрloуееID, FirstName, LаstNаше, ТitlеОfCоuпеsу"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
+ ''FROM Employees";
// Выбрать запись
string sq 16 =
"CREAТE PRO CEDURE GetEmployee "
+ "@ EmployeeID int "
+ "AS "
+ ''SELECT EmployeeID, FirstName, LаstNаше, 1itleOfCourtesy "
+ ''FROM Employees "
+ 'W HERE EmployeeID = @EmployeeID";
IblIпfо.Техt = "";
try
{
со п.ОрепО;
}
catch
{
co n.CloseO;
геtшп;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
catch { }
try
{
cmd .CommandText = ''DROP PROCEDURE СОШltEmр loуееs";
cmd .ExecuteN onQueryO;
IblInfo.Text += 'nРОlШJи \''DROP PROCEDURE СОШltЕmрlоуе
}
catch { }
try
{
cmd .CommandText = ''DROP PROCEDURE GetEmployee";
cmd .ExecuteN onQueryO;
IblInfo.Text += 'nРОlШJи \''DROP PROCEDURE GetEmp loyee\'
}
catch { }
try
{
cmd.CommandText = sq14;
cmd. ExecuteN onQueryO;
IblInfo.Text += ' nроlШlИ \"CREAТE PRO CEDURE GetAllEmp!<
}
catch { }
try
{
cmd.CommandText = sql5;
cmd. ExecuteN onQueryO;
IblInfo.Text += ' nроlШlИ \"CREAТE PRO CEDURE CountEmplc
}
catch { }
try
{
cmd.CommandText = sq!6;
cmd. ExecuteN onQueryO;
IblInfo.Text += ' nроlШlИ \"CREAТE PRO CEDURE GetEmp!oye
}
catch { }
finаПу
{
con.CloseO;
}
}
</script>
_те
~ View in Browser
ш
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
•
T""l""»>
~ !;]J ..;
[!jJ ~
IШII Тех! fi le D<Ot1oS,t
Сд'<:eI I1
using System;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
С о зд адим ма с с, кото рый в свои х методах испол ьзует зап иса нн ы е н ами
ран ее хранимы е пр о цедур ы S Q L -запро сов к та блиц е Employees
уч еб н о й базы да нных No r thw i nd . Вос п ол ьзуемс я н о вым с ред ством
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
using System;
using Sуstеm.WеЬ.Сопfiguгаtiоп;
using System;
using System.Data;
using System.Data.SqlClient;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
try
(
соп.Оре пО ;
cmd.ExecuteNonQuery();
геtшп (int)cmd.Parameters["@EmployeeID"].Value;
)
catch
(
throw new АррlicаtiоnEхсерtioп("Ошибка данных.');
}
fiпаlly
(
con.CloseO;
)
}
}
Листинг
InsertEmployeeDB.cs
Часть ICласса EmployeeDB • файле
using System;
using System.Data;
using System.Data.SqlClient;
try
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
(
со п.Ор е пО ;
cmd.ExecuteNonQuery();
}
catch
(
throw new АрросаtiоnEхсерtloп("Ошибка данных.'');
}
finally
(
con.CloseO;
)
}
}
Листинг
DeleteEmployeeDB.cs
Часть ICласса EmployeeDB • файле
using System;
using System.Data;
using System.Data.SqIClient;
try
(
со п.Ор е пО ;
cmd.ExecuteNonQuery();
}
catch
(
throw new Ар росаtiоnEхсе рtloп( "О ши бка да нных.'');
}
fiпаlly
(
con.CloseO;
)
}
}
Листинг
UpdateEmployeeDB.cs
Часть ICласса EmployeeDB • файле
using System;
using System.Data;
using System.Data.SqlClient;
using System. Collectlons.Generic;
try
(
со п .Оре пО ;
SqlDataReader reader = cmd.ExecuteReaderO;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
while (reader.ReadO)
(
EmployeeDetails еmр = пеw ЕmрюуееDеtаils(
(iпt)геаdег[''ЕmplоуееID'1,
(striпg)геаd er[''F irstN аmе "],
(striпg)геаd er[ '1.astN аmе "],
(striпg)геаd er[ ''Iit1eO fC о шtеs у"]);
employees.Add(emp);
}
геаdег.СЮsеО;
геtшп employees;
}
catch
(
thraw пеw Ар рlicаtiопЕхсе рtloп( "О ши бка да нных.'');
}
fiпаlly
(
со п. СlosеО;
)
}
}
Листинг
GetAIIEmployeesDB.cs
Часть ICласса EmployeeDB • файле
usiпg System;
usiпg System.Data;
try
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
(
со п.Ор е пО ;
return (int)cmd.ExecuteScalarO;
)
catch
(
throw пеw АрросаtiопЕхсерtloп("Ошибка данных.'');
}
finally
(
con.CloseO;
)
}
}
using System;
using System.Data;
using System.Data.SqIClient;
try
(
соп.Оре пО ;
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Single:
11 Получить п ервую строку
reader.ReadO;
EmployeeDetails еmр = new EmployeeDetails(
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
(int)reader[''Employee ID'1,
(string)read ег [ ''F irstN аmе "],
(string)read ег[ '1.astN а mе "],
(string)read ег [ ''Iit1eO fC о шtеs у" ]) ;
reader.C loseO;
геtшп е mр ;
}
catch
(
throw new АррlicаtiоnEхс е рtloп("О ши б ка да нны х.'');
}
fiпа lly
(
con.C loseO;
)
}
}
using System;
using System.Text;
using System.Collecllo ns.Generic;
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
WriteEmployeesList();
}
Исходная таблица
Число за пи сей: 9
Вставлена 1 за п ись .
Число за пи сей: 10
Удале н а 1 за п ись .
Число за пи сей: 9
дЛЯ СУБД SQL Server, которая является посредни ком в нашем коде
доступа к данным, автоматичесЮ1 увеличивать значение счетчика.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
в м С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Класс System.Data.DataSet
~
I Коллекция ParentRelatlons
DataRow
I I
Колле",ц~ Соlumпs
I
14J Кла сс DataRelation
~
I
D..taColumn
I Коллекция ChildRelations
I
Коллекция Constr2llnts
14J
~
I I
Класс DataRelation
- Constralnt
I
I Класс DefaultView
I
Каждая запись Da taSe t пр едставлена как объект Dаt a Row .
DataRow - это контейнер для действительных значений полей. К
полям записи можно обращаться через объект Da t a Row как к
ассоциативному массиву, используя в качестве Юlюча имена полей ,
напри мер , myRow [ " F i eldNaтe " ] .
Класс DbDataAdapter
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
при ложениях .
usiпg System;
usiпg System.Data;
}
}
Строка
adapter.Fill(dataset, ''EmployeesResult'');
С пи сок СОТРУдников
• Ms . Nancy, Оауооо
• Ог. Arкlrew, Fuller
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
• Ms . Janet, Leverling
• Mгs. Margaret, Peacock
• Мг. Steven, ВисЬапап
• Мг. Michael, Suyama
• Мг. Robert, King
• Ms . Lаша, Callahan
• Ms . Аппе , Dodsworth
using System;
using System.Data;
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
}
finally
(
con.CloseO;
)
"ю
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
''''
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
перебора элементов.
''''
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Beverages
• Chai
• Chang
• Guaranc Fа пtсsticа
• Sasquatch Ale
• Steeleye Stout
• CIte de Вlaуе
• Chartreuse уепе
• Ipoh Coffee
• Laughing LшnЬегjасk Lager
• Outback Lager
• RhУпЬгфu Klosterbier
• LakkalikYYri
Сопdimeпts
• Апisееd Syrup
• Chef Anton's СаjuпSeasoning
• Chef Anton's GшnЬо Mix
• Gга пdma ' s Воysе пЬеггу Spread
• Northwoods Сгаnbеггу Sauce
• Gепе п Shouyu
• Gula Маlaсса
• Siro p d'щгаые
• Vegie-spread
• Lоuisiaпа Негу Hot Реррег Sauce
• Lоuisiaпа Hot Spiced Okra
• Original Ргаnkfuпег grN2 пе So-e
Сопfес tiоns
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
• Pav!ova
• Теаоое Chocolate Biscuits
• Sir Rodney's Мапrnladе
• Sir Rodney's Scones
• NuN uCa Nu· -Nougat-Creme
• Gumbфг Gummibфгсhеп
• Schoggi Schokolade
• Zaanse koeken
• Chocolade
• Maxilaku
• Valkoinen suklaa
• Tarte au sucre
• Scottish Longbreads
Dairy Products
• Queso Cabra!es
• Queso Manchego La Pastora
• Gorgonzola Теlinо
• Mascarpone Fabioti
• Geitost
• Rac!ette Сошdаvа ult
• Camembert Рieпоt
• Gudbrandsdalsost
• F!otemysost
• Mozzarella di Giovanni
Grains/Cereals
• Gustafs К пфсkеЬгУd
• ТшmЬгУd
• Singaporean Hokkien Fried Мее
• Fi/o Mix
• Gnocchi di попna Alice
• Ravioli Апgею
• WiIшners gute SemmelknYde!
MeatIPoultry
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Produce
Seafood
• Ikura
• КопЬи
• Са тагуоп 1igers
• Nord-Ost Matjeshering
• lnlagd S iI!
• Gravad !ax
• Boston Сга Ь Meat
• Jack's New Епg1зпd Clam C howder
• Rogede sild
• Spegesild
• Escargots de Bourgogne
• RYd Kaviar
us iпg System;
us iпg System.Data;
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
catch
(
throw пеw АрросаtiопЕхсе рtloп( "О ши бка да нных.'');
}
Листинг
DataTableSelect.aspx.cs
Применение метода Select • файле
''''
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
GгidViеw1.DаtаSошсе:= dataset;
GridView1.DataMember = 'TabIeLabel";
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using System;
using System. Data;
using Sуstеm.WеЬ.Сопfiguгаtiоп;
using Sуstеm. D аtа.sqlС ~е пt;
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
}
}
помощь ю DataView
'"
в м С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
GridViewDataView.BSpx
Несортированные данные
using System;
using System.Data;
using Sуstеm.WеЬ.Сопfiguгаtiоп;
using Sуstеm.Dаtа .sqlС ~е пt;
НесортироваННblе данные
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
помощью DataView
<, >,
С р авнение числовых или строковых типов
<= , >=
<> , = Проверка на эквивален тность
NO T Отрицание
OR Логическое сложение
• < hЗ >
Фи льтровать продукт Chocolade<br />
(RowFilter = ''ProductName = 'Chocolade"')
< 1hЗ >
• < hЗ >
Фи льтровать продукты , которых н ет в заказах и на сЮJ
(RowFilter = ''UnitsInStock = О AN D UnitsOnOrder = О ' ')
< 1hЗ >
• < hЗ >
Фи льтровать продукты , ч ье на зва ни е начинается с б)'l'
(RowFilter = ''ProductName LIKE ' Р %" ')
< 1hЗ >
using System;
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using System.Data;
using Sуstеm.WеЬ.Сопfiguгаtiоп;
using Sуstеm.Dаtа.sqlСlieпt;
следУЮЩИЙ результат
48 Chocolade 15 70 г
17 Alk:e Mlltton о о
29 ТhNQringer RоstЬгаtwшst О о
53 Репh Pasties о о
16 Pavlova 29 о
г
53 Репh Pasties О о
г
55 PTtlЦ chinois 115 о
using System;
using System.Data;
using System.Web.Configuration;
using System.Data.SqlClient;
using System.Text;
dataset.таы s[ ' 'са tтаь l е''].соl шnns[ ' 'са tеgогуID' '],' // Роди теЛ l
dataset.Таblеs [ ''РгоdТаЫе''].Со lumпs[''СаtеgогуID ''] // Дочер ю
);
// Добавле н ие от н о ше ни я в коллекцию отн о шени й DataSet
dataset.Relations. Add( ге Ia tio п);
CategoryID CategoryName
1 Beverages
3 С опfeсtio пs
4 Dairy Products
б MeatIPouhry
7 Produce
8 Seafood
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
режиме что-то с ними делать. До сих пор мы пока зывали польз ователю
все автономные данные, полученные по SQL -заnр осу. Показывали
данные с налож е ни ем некоторых условий в методе
using System;
using System.Data;
using Sуstеm.WеЬ.Сопfiguгаtiоп;
using Sуstеm.Dаtа.sqlСlie пt;
using System.Text;
•
• IJ$Создайте копию стра ницы DataViewRelation.aspx с именем
Ex p r essionCo l umnsRela ti on . asp x и назначьте ее
стартовой
• ~ cnравьте значения атрибyrа Inhe r its в aupeKmUBe @Page
страницы и имя клаССQ в файле п одцержки
• Г;:;=Измените на странице заголовочн ый дескриптор на
using System;
using System. Data;
using System.Web.Configuration;
using System. Data .SqlC ~e nt;
using System.Text;
(
protected void Page_Load(object sепdег, ЕvепtAгgs е)
(
// Извлекаем строку соединения с имен ем Nоrthwiпd из файла
stгiпg сопneсtioпStriпg = WеЬСо пfigша tiопМ а паgег.
СО ппесtio пS triпgs['N о rthwiпd '1. С о ппесtio пS tгiпg;
С HeT(og
- -- .....
J
,
,,,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
httр :l/оkl . iпtШ . ruld е р а rtmeпtJiпtе mе tJр rasp netJ 1 3/1 з.пр .
• значение свойства
• значение , возвращаемое функцией
• п ереме нную -член ЮJасса
• и т.д.
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<html>
<body>
< fо пn method="post" nmat="server''>
<asp:Image ID='1magel " runat="server" ImageUr!=' <%# FilePath %>' /><
<asp:Labe! ID="Label1 " runat="server" Text="<%# FilePath %>" /><br />
<aspTextBox ID='TextBoxl " runat="server" Text=' <%# GetFilePathO %>
< а sр:НуреrLink ID='HyperLinkl " runat="server"
NavigateUr!="<%# LogoPath. Value %>" Font- Bo!d =''true'' Text=''S hc
<input type="hidden" ID=' 'Lo goPath'' runat="server" va!ue='M yMy.png">
< Ь > <%# FilePath %></b ><br />
< iшg src="<%# GetFilePathO %>">
</foпn>
</body>
</html>
'"
в.м. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
</system. web>
</configuration>
// Методы
protected void Page_Load(object sепdег, ЕvепtAгgs е)
{
if (!this.lsPostBack)
{
LabellText == "< h1 > Заполни те поля и ПОlllТlИ те за пр ос < lhl >
pict.Src == "PictureslМyPhoto.jpg";
}
.Is.
{
LabellText == "< Ы > Вот Вам такие oTBeTbI <lhl >";
photo :::: ''Pic ture slМyMy. png'';
pict.Border :::: З ;
}
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
(
геtшп Сопvеrt.ТоlпtЗ2 (а) + Сопvеrt.ТоlпtЗ2(Ь);
}
catch
{
LabellText = "< Ы style='colorred'>B поля вводите цеЛ blе чи
LabellText += "<hr style='height:l0; color:red' 1> ";
геtшп О;
}
}
+
< asp:TextВox ID ='TextВox2" nmat="server" />
= <Ьsty1e="color: Red ">
<%# АddFun(ТеxtВох l .Техt, TextВox2.Text) %> < /Ь>
< Ы > Кто здесь изображен? < /h2>
<img id= ''pk:t'' runat= "server" src ="<%# рlюtо % >" />
< Ьг />
< Ьг />
<asp:Button ID =''Вuttопl '' runat="server" O nClick="Buttonl_ Clic
</div>
</fonn>
</body>
<lhtml>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Сколько б уд ет дважды-два?
- 11
с не т
,,,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
С войство Описание
<select s ize =''З'' naше ="L istВохl " id =' 'L istВoxl ''>
DataTe x tF i eld
< орооп value="l ">Textl <Ioption> 1::;
< орооп value=''2''>Text2 <loption>
</select>
Dа ta Va 1 ие Fi е ld <select s ize =''З'' name ="L istВoxl " id =' 'L istВoxl ''>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</script>
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
управления
// Пр оверяем флажки
int сhесkеdСО Шlt = О;
striпg сhесkStгiпg = '11';
fo reach (Listltem check iп CheckBoxListl .ltems)
(
if (check.Selected)
(
с hес k S triпg
+= "(\'"'
+ check.Text // Кеу
+ '\", \''''
+ check.Value + '\ ''); "; 1/ Value
с hес kе dСО Шlt++ ;// Сч и тем выделенные флажки
}
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
}
if (checkedCount == О)
Result.Text += "< li>B CheckBoxListl ничего не выбрано! ";
e~e
Result.Text += "< li>B CheckBoxListl выбрано: " + checkString;
}
catch
(
Result.Text = "< Ы s tуle='соloг:Rеd' > Выберите в каждом элементе <,
)
}
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
И~8НО~ И~IIНО~
Петров
ИВOIНОВ
iJ ГleTPO В
r
Иванов
r
Сидоров
r Петров
Г
Иван о в
'" СИДОРОВ
'" Петров
Попучнть ~ЫАеленное I
управления
назначьте ее стартовой
• ]J$ОФОрмите и настройте интерфейсную часть страницы
DataReaderListВinding.aspx так, чтобы она имела следующее
дес крипторное представление
using System;
using System.Data;
using Sуstеm.WеЬ.Сопfiguгаtiоп;
using Sуstеm.Dаtа.sqlСlie пt;
using Sуstеm.WеЬ.U I .WеЬСопtrоls;
try
{
/1 Открыть соединение и получить DataReader
соп.ОрепО;
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
DataReaderListBinding.aspx.cs
,,,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ПОЛ'\,ЧИТЬ выделенное
using System;
using System.Data;
using System.Web.Configuration;
using System.Data.SqlClient;
using System.Web.UI.WebContro ls;
try
{
/1 Открыть соединение и получи ть DataReader
соп.ОрепО;
,,,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
да нным
Нам нужно определять команды только для тех типов действий, которые
мы намерены выполнить. Так, например , если мы используем источник
данных только для чтения набора записей, то нам достаточно
определить только свойство SelectQue r y .
SqlDataSourceSimple "aspx
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
следУЮЩИЙ результат
Nanc'i ....
Andrew
Janel
Margare1 ~
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
S8..ECT coтrn.тd:
f;ELECТ ЕтpioуссD, F,"otN.Jmo, LxtN.Jmo, 111Ю, City FROМ Errployocs INt-f:RЕ City -@City
~
Refresh Paameters (>ну Е'Ше<.. I
P"..""",t".-s; Pi:I"~"",t".- sС<..п,, ;
R~~my~~~y,,
~~==~I::::::::::;I ~ Сlс~m~'~d=С=С~------СОiJ
aty IstCitJeS ,5€le:::tedV", • I
~ ,с=m~УСdС'DС-____________________-:l
--".J l ею",," iJ
DcfюtVаlю
Add Рзжпеtег
еж
I
Обратите внимание, что обратную отсылку мы выполняем за счет
"'
включенного свойства Аи t oPos t Ba c k раскрывающегося списка
lstC i ties . Обратите также внимание , что правильный перенос
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Листинг ДеСlCрипторное представление страницы
SqlDataSourceParameters.aspx
Выберите город
I Lomon iJ
Проживающие сотру,цниЮ1
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
=~
S8..ECT co т rn.тd:
ReFresh Paameters
Add PiI"ameter
еж
I
"'1
После набора команды в области SELECT coттand щелчок на кнопке
Refresh Parameters сканирует введенную командУ и заполняет другие
области и раскрывающиеся списки редактора н ужн ой инqюрмацией , из
которой можн о п отом быстро выб р ать требуемое значе н ие. В списке
Paraтe t e r source перечисле н ы тип ы элемен тов, которые MOryr
передавать значения параметров в источник данных:
• Cook i e
• Con t ro1
• Ротт
• Pro f i le
• Que r ySt ri ng
• Sess i on
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
запроса
<h2 >
Выберите ropoA <Ih2 >
< asp:ListВox ID=''lstCities'' nmat= "server"
Dаtа50шсеID= "s ошсеЕmрlоуее С itiеs "
DataTextField= "С пу">
</asp:ListВox>
< Ьг />
< Ьг />
<asp:Button ID="cmdGo" nmat= "sе rvег"Теxt=' При ме ни ть"
OnClick="cmdGo Click" />
</div>
</fonn>
</body>
<lhtml>
QueryParameterl.aspx
• Г;:;=Создайте н овую страницу с объединенным кодом и им енем
QueryPara meter2 . asp x
• ~ оместите на страницу источник данных SqlDataSource
и элемент Gr i dView
<h2 >
Прожив аю щие сотру,цники < lh2>
<asp:GridView ID="GridViewl " runat="server" Data50urceID= "sou
</asp:GridView>
</div>
</fоПll>
</body>
<lhtml>
..,
отлажены. Они более безопасны , ПОСКОЛЬКУ н едостynны и зме н е ниям со
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
му FТ O)eCtS
:=J
Fles ofty~ : СI"~с=,.~"~.~')-------------'.:J
::;
'
string sq 11 =
"CREAТE PRO CEDURE GetCityes "
+ "AS"
+ ''SELECT Dl STINCT City FROM Employees";
IblIпfо.Техt = "";
{
con.CloseO;
геtшп;
con.CloseO;
}
}
</script>
<body>
<form id= "forml " nmat="server''>
<div>
< h2 > Выберите город<lh2 >
<asp:SqIData50urce ID="sourceEmp loyeeC ities" nmat= "server"
СоппесtioпS trmg="<%$ соппесtioп5trmgs:Nоrthwind %>"
Provid erN аmе= "5 ystem Da ы. Sq IC lient"
5еlесtСоmmaпd= "Gе tС ityеs "
5 е lectC о mmaпdТуре= "5 to red Proced ше ''>
</as р:5 q lDataS о шсе >
<asp:DropDownList ID="lstCities" runat="server"
AutoPostВack='True" DataSourceID="sourceEmployeeC ities"
DataTextFie!d="C ity" />
Выберите город
..,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
I Loгtdon iJ
Проживающие сотру,цниЮ1
Теперь попро буем пр о верить раб оту хранимых процедур при передаче
параметра через строку запроса из одной ст р ан ицы в другую.
..,
<html xmIns='huр ://www.wЗ .or&,1999/xhtml" >
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<h2 >
Выберите ropoA <Ih2>
< asp:ListВox ID=''lstC ities'' nmat= "server"
Data50ureeID= "soureeEmployeeC ities"
DataTextField= "С пу">
</asp:ListВox>
< Ьг/>
< Ьг />
<asp:Button ID="emdGo" nmat= "sе rvег"Теxt=' При ме ни ть"
OnClick="cmdGo_Cliek " />
</div>
</fonn>
</body>
<lhtml>
<h2 >
Проживающие сотру,цники < lh2>
<asp:GridView ID="GridViewl " runat="server" Dаta50шсе ID ="sо u
</asp:GridView>
</div>
</fonn>
</body>
<lhtml>
t r ue .
кода
'"
В.М. СН"""'
f~~'~~~~~~;~~~~S;:h::::::::::~П~
SqlDataSourceException,aspx* ":'':':":"~-
~ :~"~"~'~"~":"~''~N~'i"..
Ser\ler Objects & Events ~
B <scr:ipt r: un a t ="server:">
l L
</~c<lpo
~ qlDot .SQ uc<:;~ 1 . 8 ~ 1 = t ed +=
lIi<W Вф"OIIOUU!IIotuoEY_(S<p>tOllou<>ol-"_U<I)' (f!ш ,-'" '" ",<ftj
<script nmat="server''>
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
SqlDataSourceException.aspx
SqlDataSourceException.aspx
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<lhead>
<body>
<form id= "form1 " nmat= "selVer''>
<div>
<asp:SqIDataSource ID="Sq lDаtаSошсе 1" nmat= "selVer"
Provid erN аmе= "5 ystem Da ы. 5q IC Iient"
СоппесtюпS tring="<%$ соппесtюп5trings:Nоrthwind %>"
5electCommand=
"5ELECT Emp!oyeeID, FirstName, LastName, 1ide, с ку FROM
< asp:ListВox ID=''ListBoxl'' runat="selVer" DataSource ID=''S qlDat
DataTextField=''FirstName'' 1>
< Ьг 1>
< Ьг 1>
<asp:GridView ID="GridViewl " runat="selVer" Data50urceID="5qI
< Ьг 1>
<asp:Button ID =''Вuttоп l '' nmat="selVer" Техt="Обновить " 1>
<asp:Labe! ID="lb lError" runat= "selVer" 1>
</div>
</fопn>
<!body>
<lhtml>
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
LfDATE соmrnз:-кi:
lPD ~ТE ЕrrvЮ УОО S SEТ Fr- stN.JmО-@Fr-stN.JmО, LastN.Ynо-@...astN.J.-ne , Т1t1з-@Тfu ,
Oy =:ij)City FROМ Е т plo"ее; W i-fllЕ Е m ploуееЮ = @:t m ploу",Ю
~
ReFresh Paameters (>ну Е'Ше< .. I
P,.-"гт-oo=t".-s ; Рi:I"~гт-оо=t".- 5('_П" ;
"No~mgy~]jY~""~;;;;;;;;F;;;;;;;;;;;;;;;;;; ~ I,iij.
IIJ _._• •113
3
~rstNзmе • I
LastNзm е ~ [)"fcOJtV"L..:
~i~
ЕmploуооЮ
~I% ..... зdviПЫ !Xcootjes
Add Paameter
еж
I41
После таких действ ий редактор п араметров сге н ерирует
п о яви лос ь
,,,
в.м. СН"",,,В Про,рйммupoвtJNШ' Na ASP.NET
SqlDataSourceUpdates.aspx*
________
3 Refresh
"аЬ~'________~4С- ~аЬ
~'_________ :d
~t~СiclJ~mш
AooN
~~~~~~ с,
IEd t the Grt:!Yiew 's cctJ mnsl
Г Еп ЮleР~
Г Еп Юle 5a"th]
Г Еn Юle Ed th]
Г Еп Юle Selecbo'l
Ed t Те rrфtеs
Flelds
"'"
~ ФiМ.1ЛИЯ
IIJ
.~!!!-~~ "1" T,~
Refresh хЬеmз
ею
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<script nmat="server''>
11 Здесь м ы не напи сал и ни стро чки кода!!!
</script>
SqlDataSourceUpdates.aspx
Flelds
-,
&iJ НyperLIi<.FieId ,,-
>- ,
[!]
, .g] Im ageFieId
Seiectl rnageLXl
g] Вuttс:П'ieId
SeiectText
1;].!iJ Соmm ю::JFieId SI-ю....сю::eВuttоо T~
m Ed t, Цx1ate , сю::eI Sl-юv.DeieteВuttоо ,асе
- g] Seiect
SГюwEdtБuttоо ,асе
..m
Delete
5m""'_ ,асе
,,~
-'.J
Sl-юwSelectБuttоо ,асе
So:xtExlXessio1
Selected ftelds :
Цxiзtе l rnageLXl
[I] т п/п
ЦxiзtеТехt "сМе
~ "'"
IIJ ФiМ.1ЛИЯ
Vaida~oц:>
Vrsb!e T~
[IJ Статус
[I] Г):ю~т
ShowInseгtButton
mИзмен.1ть
ii] New, Insert, сю::eI 'Nhether the field Sh::Ud dspIзу ап hsert Шtton to ,
Refresh хЬеmз
''''
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Здесь для пров ерЮ1 н еизменности полей в базе данных при меняются
ориrn.нальные параметры , переда нные из Gr i dVi e w в источник
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</аsр:SqIDаtаSошсе >
ТаЬ
OtherNameParamupdate5.a5px*
Server Object5 & Event5
<%@ Page Language ="c#~ %>
''''
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
e.Command .Parameters.Remove(e.Command.Parameters["@Tttle'T
e.Command .Parameters.Remove(e.Command.Parameters["@City'T
e.Command .Parameters.Remove(e.Command.Parameters["@Emplo
}
</seript>
""
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ObjectDataSource
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
СО,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Add EXlstNlg Item - C:\Chalf \Book\WEB\ASP.NET 2.0 8< С# (VS.I\ET 2005)\9) Привязка данныx AD
Look п:
f,1y Project5
Ае rn т е :
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
11 Удаление записи
striпg sql2 ==
"CREAТE PROCEDURE De)eteEmployee "
+ "@EmployeeID iпt"
+ "AS"
+ ''DELEТE FROM Employees WHERE EmployeeID == @EmployeeID";
11 Обновление записи
striпg sq13 ==
"CREAТE PROCEDURE Upda'eEmployee"
+ "@EmployeeID iпt, "
+ "@FirstName varchar(10),"
+ "@LastName varchar(20),"
+ "@1itleОfCошtеsу уагсшг(25)"
+ "AS"
+ 'UPDAТE Еmрюуееs "
+ "SET"
+ ''FirstName == @FirstName,"
+ ''LastN аmе := @LastName,"
+ 'TltleOfCourtesy = @Tlt!eOfCourtesy"
+ 'WHERE EmployeeID = @EmployeeID";
11 Выбрать все
striпg sq14 :=
11 Выбрать запись
striпg sql6 ==
"CREAТE PROCEDURE GetEmployee "
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Листинг
или прервать
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg System;
EmployeeDB.cs
СО,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
стартовой
• ~3апустите страницу, чтобы проверить , что конструктор по
умолчанию работает и извлекает из файла Web.Config строку
соединения с именем "N or t hwind "
• r;:;=в файле WеЬ.Сопfig скопируйте строку соединения с
идентификатором " Northwind " под другим им ен ем
ObjectDataSourcel System,Web,UI,Wel'"
--=1 1~
rn~ ~ "-J 1"""
....:iI
DаtaЕАndlП\JL-_,
D€~ted IEvents I
D€lebr>;]
Osposed
F~tering
IПlt
Inserted
Inserting
Load
ObJectCreated
ОЬ ectCrea1Jn •
ObjectDisposilg
PгeRend€г
Selected
Selecbng
LklkJad
Updated
Updabng
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
try
(
со п.Ор е пО ;
SqIDataReader reader = сmd.ЕхесutеRеаdег(СоmmaпdВеhаviог.Single:
11 Получить п ервую строку
reader.ReadO;
Emp loyeeDetaiJs еmр = пеw EmployeeDetails(
(int)reader[''Employee ID'1,
(striпg)геаdег[ ''F irstN аmе "],
(string)read ег[ '1..astN аmе "],
(striпg)геаd ег[ ' Тit1eO fC о шtеs у" ]);
reader.CloseO;
геtшп еmр;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
}
catch
(
throw new АрросаtiоnEхсе рtloп( "Ошибка да нных.');
}
fiпаlly
(
con.C loseO;
)
}
11 Вы б ра ть з а п и с ь
string sql6 =
"C REAТE PRO C EDURE GetEmployee "
+ "@EmployeeID int "
+ "AS"
+ "S ELECT Еmрюуе е ID , FirstName, LastName, TttleO fC ourtesy "
+ ''FROM Employees "
+ 'WHERE EmployeeID = @ Employee ID";
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
вызываемый метод
о TypeName= " Emp l oyeeDB " приме н яемый
пользовательский класс
• ~ыделите сп и сок Lis t Bo x l и устан овите для него
следУЮщие свойства
о DataSourceID= " ObjectOa t aSourcel "
подключенный источник данных
о DataTe x tField= " Emp l oyee I O" - видимые данные
списка
вызываемый метод
о TypeName= " Emp l oyeeDB " приме н яемый
пользовательский класс
• ~елчком на кнопке ( ... ) в п оле свойства
ObjectOa t aSou r ce 2 . SelectParameters вызови те
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
",aтc t" . <.Х> 1 С< I ЮП Ldito.
==~ 211<1
Работа этого окна трансqюрм ируется в следующий дескр ип тор ныи код
разметочной части ст р ани цы
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Дело здесь в том, что когда страница запрашивается в первый раз, нет
никакого выбранного значения в элементе Li s t Bo xl , но элемен т
ObjectDataSource2 все равно вызовет метод GetE mployee () с
неопределеННblМ значением emp l oyee I D. Э то и вызовет генерац ию
ИСЮlючения в поиске данных. Ситуа цию можно исправить, если
перехватить попытку привязки в элементе Objec t Da t aSou r ce2 и
<script nmat="server''>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
(
if (e.lnputParameters["employeeID"] == null)
е.Сапсеl = tпJе ;
}
</script>
<h2 >
Выберите IО сотрудника<lh2 >
<asp:ListBox ID="ListВoxl " nmat="server" AutoPostВack='True"
DataSourceID="ObjectDataSource 1" DataTextField=''Employee Ш"
Rows=''9'' Width="100px" 1>
<h2 >
Данные о СОТРУднике<lh2 >
<asp :DetailsView IО= ''Details Viewl" runat="server"
Height="50px" Width="12 5рх" DataSourceID=''ObjectDataSource2''
AutoGenerateRows=''False'' >
<Fields >
<asp :ВоundField DataField= "LastN ате"
HeaderText='1.astN аmе" SortExpressio n='1.astName" 1>
,ОС
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
ObjectDataSourceParameters.aspx
получите результат
Выберите ID сотрудника
2
3
4
5
6
,
7
Да нны е о сотрудн и ке
LastName Снетков
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
11 Обновление записи
string sql3 =
"C REAТE PROCEDURE UpdateEmployee "
+ "@EmployeeID int, "
+ "@ FirstName varchar(10), "
,ее
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
try
(
соп.Оре пО ;
cmd.ExecuteNonQuery();
}
catch
(
throw new АрросаtiоnEхсерtioп("Ошибка данных.");
}
finally
(
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
con.C loseO;
}
}
стартовой
• ~Запустите страницу о ь j ectDa ta S ошсе U pdates 1.aspx на
<title>Untitled Page</tide>
</head >
<body>
< fопn id="forml" runat="server''>
<div>
<asp:O bjectDataSource ID="O bjectDataSource 1" runat= "server"
ТуреNаше=''ЕШР1оуееDВ''
5 е 1ectM ethod = "GеtAllEшр 10 yees"
Uрdа tеМеthоd='Uрdа tеЕШР1оуее"
/>
<asp:GridView ID="GridViewl" runat="server"
AutoGenerateCo lumns=''False''
DataSource ID="O bjectDataSource 1 ''>
< Соlшnns>
<aspBoundField Dа tаFiеld="Ешрlоуее ID " HeaderText= "NQ п /п " />
<aspBoundField DataField="FirstName" НеаdегТехt=' Имя " />
<aspBoundField DataField="LastName" НеаdегТеxt="Фамилия " />
<asp BoundField DataField= ' ТIdeO fCourtesy" HeaderText= "C TaTYc "
< аsр:СошmaпdFiеld ButtonType="Button" НеаdегТеxt=' Изменить "
SlюwЕditВuttоп='Тruе" ShowHeader='True"
EditText= ' 'Редакция '' Cancerrext='OTMeHa " UрdаtеТеxt="Прим(
<HeaderStyle BackColor="Red " ForeColor= ''Yellow'' />
</аsр:Сошшапd Field>
</Соlumns>
</asp:GridView>
</div>
</form>
</body>
</html>
ObjectDataSourceUpdatesl.aspx
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
1 Nancy Davolio Ms .
2 Andrew Fuller Dr.
3 Janet Leverling Ms .
4 Margaret Peacock Mrs .
5 Steven Buchanan Mr.
б Michae! Suyama Mr.
7 Robert King Mr.
8 Laura Callahan Ms .
9 Владимир С н етков До ц е н т 007
m
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg System;
App_Code/EmployeeDetails.cs
UpdateEmp l oyee()
using System;
using System.Data;
using System.Data.SqlClient;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
try
(
со п.Ор е пО ;
cmd.ExecuteNonQuery();
}
catch
(
throw new АррlicаtiоnEхсерtloп("Ошибка данных.'');
}
finally
(
con.CloseO;
)
}
try
(
со п .Оре пО ;
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
сmd.ЕхеcutеNопQuеry();
}
catch
(
throw пеw АрросаtiопЕхсерtloп("Ошибка данных.");
}
finally
(
con.CloseO;
)
}
}
App_Code/UpdateEmployeeDB.cs
стартовой
• IJ$До п олни те оп и сание объекта ObjectDataSourcel всего
лишь одним м-а-а-а-ле ньким атр и бугом
о DataObjec t TypeName= " Emp l oyeeDe t ails " - дл я
<script nmat="server''>
11 Здесь мы не написали ни строчки кода!!!
</script>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ObjectDataSourceUpdates2.aspx
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
метод
/*
11 Исходн ый метод
public void UpdateEmployee(int employee ID, string firstName,
string IastName , string t.itleO fCourtesy)
{
}
*/
using System;
using System.Data;
using System.Data.SqlClient;
'"
в.м. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
try
{
соп.ОрепО;
cmd. ExecuteN onQueryO;
}
catch
(
throw new А ррliсаtionEхсер tiоп("О ши бка данны х. '');
}
finа Пу
{
con.CloseO;
}
}
}
стартовой
ObjectDataSource ТBsks
COnflgLfe Оаtз 5ource,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
54с! а b<..sness cbject 1tJa: ею ье LEed to rе1Т.еve ос ~a:e шtэ (for exaгrr,::!e, ю object defГ'ed h the Eil cf
I\pp_Code directcry (ос tfis ёррkэton ).
с ,
11
O1oc€e а rne1hxJ 01 1he ыsПe о , oo;ect 1t1эt г OOЛiS dэt3 to asoociate ",1t11he SELECT opera:i:ll ТОО mOOюd
с'" rc1JJn а DUOЖ, D "mцюjо г, of s:ronj,-typoJ coloctIOll,
O1oc€e а rne1hxJ 01 1he ыsПe» oo;ect (о =о",,,:е " i11 the ISQCJ.ТE ope<a:i::tl ТПе method mOtJd ,," се р! а
>",,,,,,,,,ti,, Iа- eoch P'op::rty 01 1tю сЬ и ob1'ct, Of" snjз p,,,-,rnNor I'kri1rs the dxa OOjOCt (о цх1зm,
I 3
-1
~rrpby "" q гt::J 2 . mpb ~D )
&.1Ещ:Jo ~ qп tJ 2 .тф", . D), rm.n, Етф", .,с.,~
n' <Г1Е nфy .. (Е nфy .. D<иI, ' rrv}, г-ш-n, IгtЗ 2
Цх1ЛЕгсрЬУ"" (ЕГСРЬ~ .тр}
:nE гс vоо а гtЗ 2 ет eD s:r ftotName , sttтю Iэo tlJ:>:ne stг ~j :IOK OIJ tes v
m
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
VJoUd you lI<e to regenerate the GrdView с olJ тп /ieI±,.-,j dh key' lEh;J the , elPcted data , ос.- се ,chema7
VliftJ;-.;j : ths WI delete aI e>dstn;) roli mn /ieI±.
<asp:O bje ctD a taSollГce ID="O bje c tDa ta S ollГce 1" runat= "server"
TypeName=''EmployeeDB ''
SelectMethod="CountEmployees"
Upda te М ethod = 'U pda te Еmр Ioуее S trk:t">
<Update Parameters>
<asp:Parameter Name="titleO fC ourtesyStrict" Typ e="S tring" />
<asp:Parameter Name="lastN ameStrict" Type="String" />
<asp:Parameter Name="firs tNameStrict" Type=''S tring'' />
<asp:Parameter Name="employeeIDStrict" Туре=' 1пtЗ2" />
<lUpdateParameters>
</asp:O bjectDataS OllГc e >
<script nшat="sеrvеr''>
<Update Parameters>
<asp:Parameter Name=''titleO fCourtesyS trict'' Type="S tring" />
<asp:Parameter Name="lastN ameStrk:t" Type="String" />
<asp:Parameter Name="firstNameS trict" Type="String" />
<asp:Parameter Name="emp loyeeIDStrict" Туре=' 1пtЗ2" />
<IUpdateParameters>
< Соluпms>
<aspBoundField DataField="EmployeeID" HeaderText=''NQ л /л" />
<aspBoundField DataField="FirstName" Неаd егТехt=' И мя" />
<aspBoundField DataField="LastName" Н е аd е гТеxt="Фамил ия " />
<asp BoundField DataField= 'ТItleO fCourtesy" HeaderText="C TaTYc"
<asp :CommandField ButtonType='1.ink" Cancerrext=''OTMeHa ''
ЕditТеxt="Редакци я " Н еаdе гТеxt="И зме нить "
SlюwЕd itВuttоп='Тruе"
ShowHeader='True" U рdаtеТеxt=' 'ПРИМf
<HeaderStyle BackColor="Red" ForeColor=''Yellow'' />
</asp:CommandField >
</Соluпms>
</asp:GridView>
</div>
</form>
<!body>
<lhtml>
ОЬjесtDаtаSоurсеUрdаtеsЗ.аsрх
удаления записей
п араметры:
стартовой
• Г;;:;npoBepЬTe работоспособность начального варианта страницы
О Ь jectDataSo шсе F ullasp х
m
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ОП!iqUrС!JiJЫ!Юt.r<С UblCCtl);){;)!lour<:Cl
===-~_.11,"
Deflne DiltiI Methods
о-.::.с..е а me1h:d:
Jnt'J2
,
Thoo JD 01 ~ сопW to (!<"I th" p-c,=rty,~ Irc.-n
GridView Tasks
Auto Format ...
Choose Data 5ource: IObjectDataSourcel : I
Conf>;Jcre Data Sol.fce" ,
Refresh Schema
Edit CoIu rms. ,
Г ЕпаЫе Selecboo
Edit Те rтplates
свойств
о ButtonType=L i n k
о Dеlе t еТе хt = " У д а л ить "
Flelds
=====---'------:.1J~
Avaictie FoeIds : ComlТl<ГКf'ieId рrч::-егres:
.- ·т le!; FieI:1s),
13т Вc:<л:fieI::J
>""
~1.f..!.J
Acc~ss~"'*'r Т ""х!
ВuttmType
mТ1tiЮfCOJt~sу Сю::elIrnagel1l
mEmployeelD Сю::еГТехt Отмена
mFr slNJm e CaвeesV 3idati:n T, ~
~ CheckВoxFieI::J @ Cm1rolStylo
Ddetcl7'7&1
~I!I~4~!!I'IIIII!iI!i• • y ДafJ.1ТЬ
SeЮсtсd тcldз :
Ec1tIrmgeL\1
Ec1tТext Редакция
III mn!n S FooterSt)e
Ш см" FootorToxt
mФам1J11Я
rn Статус
. ~1Тb
t, ]--1о:,,,,,*,, I ~ 1
DeleteText
The text to ье dSpIзу&1 011 the delete butlal
Refresb mmэ
• ~3а пол ните обработч ики событий так, чтобы окон ч ательный
код стр а ницы ObjectDataSourceFuJl aspx стал следующим
</script>
</Co lumns>
</asp:GridView>
<asp:LinkButton ID=''LinkButtonl '' nmat= "selVer" ОпСliсk= ' 'LinkВt
Вставка
</asp:LinkButton>
< Ьг />
<asp:Label ID="lb Unfo " runat="selVer" ЕпаЫеViеwStа tе="Fаlsе" />
</div>
</fonn>
</body>
<lhtml>
Вставка
Добавлена за пись 10
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
SqlDataSource
выбора пользователя.
<script nmat="server''>
(
if (!this.lsPostВack)// Первый запрос
(
// Инициировать запрос и привязать результаты
lstСitiеs.DаtаSошсе:= sошсеЕmрlоуееСitiеs.Sеleсt(
DataSourceSelectArguments.Empty);
lstC ities.DataBindO;
// Изменить команду
e.Command.CommandText:= ''SELECT EmployeelD, FirstName, Lastf'
+ 'Тit1e, City FRQM Employees WHERE City!:="";
)
}
</script>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
SqlDataSourceChange.aspx
I Kp;!!ICHO~PCK ::::::J
Проживающие сотру,цниЮ1
т
(
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Мk:rosoft,AnaysrsServ k:es
Мk:roso!t,AnaysrsServ k:es
Mk:rosoft, ,!.л3"уsisServi, ,
Mk:rosoft, ,!.л3"уЪServi, ,
Gtb al дss"
Gtb al дss"
J
System, Wh oows,Fa-ms System ,Wh::bws,F a-" c:lprcga"
Sy::tem, Wh oows,FCfms System ,Wh::!ow::,FCf" c:lprcga"
, , System ,Wh::!ow::,FCf"
E.iter: fjЗta
Vегш п: 2,0,0,0
Cancel
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Flelds "*iJiJ
АvalЮle ftelds: Bc:u-кFieId lXoperties :
~= [!] :::J
. ИJ CheckВoxFieId
DаtcFспnatStrh;)
.iJ НyperLIi<.FieId S FooterStyIe
, tgJ ImageFieId
FooterText
dJ ВuttсП'ieId Незder 1rnagei..Xl
I!I-,g] Comm zn::1FieId I±J НeaderStyIe
.!Е TemplateFieId
НeaderText
Htrrl:lYode True
InsertVisbIe True
I±J Iterr6ty1e
N.LJispIayт ext
ReacOгfy Fase
SГю....tieader True
-
Sa-tEхlXеssia'l
НeadeгText
The text l'Iit!-il the header of ths field.
ос Са'УeI
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Свойства BoundFiekl
Свойство Описание
можно чаще
ControlSty l e ,
Определяет стиль конкретного
Heade r Style ,
раздела отдельного столбца
Foote r Style , I t emSty l e
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Форматирование в GridView
'"
В.М. СН"",,,В Про,раммupoвtJNШ' NQ ASP.NET
.1J~
T...-rpl ..,... Гf! ;:;:
~ ~ ~ ~
АЧ' r.ET \',00 ASP J-ET W3!J ж-sma l Vleb ЕrrjЖ)l Web
S ib SOfYEO S i'" stoc"" K~ S ib
[:'-0"'''' .. ,
01( Cd-<:" II
DataFormatString
Тип При мер результата
(варианты)
Научный ( }
" О:Е 1.2345Е + 003
(экспоненциальныи)
Процентный (О:Р}
Фиксированный
(O:F} 1234.5
десятичный
(O:FO} 1234
Дата и время по
06.15.2007 11:35:21
умолчанию
(O:dd.MM.yyyy, НН
15.06.2007, 11 часов.
часов.)
Общий (O:G}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<script nmat="server''>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Родился Оклад
Стили в GridView
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Litera/
Mode Значе ни е Text
Удаляет из текста неподцерживаемые броузером теги.
Transform
Если теги относятся к языку разметки НТМL или
о
XHTML , то содержимое текста не модифицируется
Пример
с3 ~
P<>r=.1 \fJob Errpty" Wob
5,~ 5t<f"R К( 5 ,."
5eafch On lre
Т" Щ' k!te , .. ,
Loc,",, :
CdJ:eI 11
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
• IJ$О ткрой те
файл MyLiteraL aspx.cs и изм е ни те имя м а сса
Defa u l t на My Ll t e r al
стр а ницы с
using System;
using System.Data;
using Sуstеm.Сопfigurаtiоп;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using Sуstеm.WеЬ.U I .WеЬСопtrоls;
using Sуstеm.WеЬ.U I .WеЬСопtrоls.WеЬРаrts;
using Sуstеm.WеЬ.U I .НtmlСопtгоls;
~
e Edt Y'r€W F.avrntes Toofs ~
+-в.аCk .......... Iij @J tJ:jO eaSear(h (!j FаУопtes ~ мediз G
Adctes<; 11I htI+J /!o::.am st 1О37!WеЬэtе ll;МyLlteral aspx
•
тгansfопn:Привет студентам сфу!
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Приведем пример .
•
l/Ii!IiIIIII
D
м.,,,• .- Pogo _"_
[!j]
ccrn-o l
КТ .....
00 Pogo
!i
Web S• ..,~e
~
С ",,,
~
stj i< SCe" t
,-&J,
"PP 1 ~a~ ",
Ц'Jj
-~
crnfgJa:I ",
~
~ F I Io
h'Schoma
х м..
iJ ~
То" Fil2
]j
R о=.л: о Fi'"
.
ij
SQ.- о..:..Ь=
Dазset -~,
flrd iof
i.I1I
5<00 M~
1t!J'
M:tJt:e I'Jeb
' ..m
o'!'l
\1\5(r"" Н е
~
,-,
~
J5Cfp~ "е
.-
[1::'" ~
I д forrn for Wo!:J ц" ь,,,,,,
,iJ!I .
IЭ (о) jjJ
~W I MIT~"'d'PX
L~: I V "'-"' I С f iJ '" p!io:e сWэ n "1Нае filo
Г Seloct гrвsOO<1"'9"
using System;
using System. Data;
using Sуstеm.Сопfigurаtiоп;
using Sуstеm.Соllесtiо пs;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using Sуstеm.WеЬ.U I .WеЬСопtrо ls;
using Sуstеm.WеЬ.U I .WеЬСопtrо ls.Wе ЬРаrts ;
using Sуstеm.WеЬ.U I . НtmlСопtгоls ;
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Настраиваем таблицу
table.BorderWidth := 1;// Рамка таблицы
table.Style. Value := "а ligп:=сепtег";
// Формируем строки
for (int row := О; row < rowMax; row++)
{
TableRow tr := пеw TabIeRowO;// Создал и строку
table.Rows.Add(tr);// Добавили в таблицу
// Горизонтальная черта
foгm1.Сопtгоls.Аdd(пеw HtmlGenericContro~ ''hr'1 );
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Подвал страницы
Lз Ь е!:= пеw Label();
form! .С о ntгo ~. Add(labe 1);
Lз Ь еLТеxt:= "< stго пg>Э то подвал страницы (цокольный этаж !:
)
}
Динамическая таблица
ячейка{ 1,1} ячейка{ 1,2} ячейка{ 1,3} ячейка{ 1,4}
ячейка{2,l} ячейка{2,2} ячейка{2,3} ячейка{2,4}
ячейка{З,l} ячейка{3,2} ячейка{3,3} ячейка{3,4}
ячейка{ 4,1} ячейка{ 4,2} ячейка{ 4,3} ячейка{ 4,4}
h u-met
R GB
Color Color Name RGB Value Color Color Name (
Value
,СО
В.М. С""",,,в
#778899 -
110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
гене р ацию атрибуга аl t в том случае, если и зоб р ажение будет п устым.
Приведем пример .
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
.1J~
T<><rp!= ri ; ,:::
•
lIII:!IiIIIII
D
м.",,..- Pogo
I!]
_ с_
ccrn-o l
~
КТf.1.. Pogo
!i
W еЬ5.п~е
~
Ck!"
~
sry., SCe" t
,-&1,
"«, I ~ a ~ ,,,
-
~
crn~gJ"~I",
в1
)(]VL F,Io
!JIj
X ~ Schotm
~
То" Fil2
J'j
ROЮ'JC. Fi'e
ij
SQ.-o.:..b=
[НJ
Оа135е ! -,~
11rd ...
~
s.te M~
i]r"
с
M: tJl:e I'Jeb
'.m
~
\1\5(rl): ":е
;.
~
е_,
~
J5Cr\X "е
~'
I~ form for WoI:J ц" ь:ion<
~> "I"~
, ,~
-.~,=.=,--------------------------------,I
СI,=~=,=
,,:----------iJ-::l
. '" p!io:e сООе n "V"ae fie
Г Seю mзste< 1'39"
Сд'<:eI 11
using System;
using System.Data;
using System.Configuration;
using System.Collectio ns;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebContro ls;
using System.Web.UI.WebContro ls.WebParts;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using System.Web.UI.HtmlControls;
Обрат и те внима ни е, что значек " ~ " (тильда) в знач е нии свойства
ImageU r 1 означает корневой каталог п риложения ( н о н е сайта root).
PostBack
Оопе
Приведем пример .
us iпg System;
us iпg System.Data;
us iпg Systеm. Со пfigша tiоп;
us iпg System. Collections;
us iпg System. Web;
us iпg System.Web .Security;
us iпg System. Web.UI;
us iпg System. Web. UI. WebControls;
us iпg System.Web.UI.WebControls. WebParts;
us iпg System. Web.UI.HtmlControls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
imageButton.AlternateText:= Striпg.Fоrmat(
''Координаты щелчка: ({О}, {l} )", е.Х, е.У);
}
}
Оопе
,ее
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
1 2
(0,94) 1--_----'-
(1_6--'
2,'--
94-'.)+-_ _ _----1 (324,94)
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
АМ ",",VJ Itpm - C'\Ch~ .. R()nk\WFА\дSP NFT? () ~ r..t: (VS i'.FT 'ХЮ5)\ 11) r""RPpHhlf' 'Jlf'МРНТh' V"I' .lJ~
Ii ; ,:::
-
Т""1""»>
ш! D [!j]
_ с_ I !i ~ ~
I'lob Form • .- Pogo
м.,,, Wob S• ..,~e С",,, stj i< SCe" t
ccrn-o l
,-&J,
"PP 1 ~a~ ",
Ц'Jj
-~
crnfgJa:I",
~
~F , ", X~
h'iJ
Schoma
~
То" Fil2
]j
R о=.л: о Fi'"
ij
SQ.- о..:..Ь=
Dазset -~,
flrd iof
i.I1I
5<00 M~
1t!J'
M:tJt:e I'Jeb
' ..m
o'!'l
\1\5(r"" Н е
~
"
,-,
~
J5Cfp~ "е
.-
[1::'" ~ ,iJ!I
Iдn ктм.. Р'9' thot ''''' h:Wo , I"",t-""" codo
.
IЭ (о) jjJ
~w I] ~.htm
<Q'
, • iJ г р """~
, >!p3I&e '"
Г~~ 'tRr r""e
</div>
</fonn>
</body>
<lhtml>
о one.htm
о two.htm
о three.htm
о foш.htm
• Г;:;==Заполните каж.цую из страниц соответствующим текстом по
пр иведенному об ра зц у
<html>
<head>
<tide >Untitled Dосuшепt</title >
<meta http-еquiv= "С опtепt-Туре " сопtепt= " tех tJhtшl; charset=window!
<lhead>
<body>
<h1 >
Стра ница вызвана по щелчку на горячей зо не 1
<lhl >
</body>
<lhtml>
функциональность
1 2
При рен деринге эл емент управления ImageMap ген ер ирует тег < i тg
use map= " #myMap " /> и тег <тар id= " myMap "
пате= " ту М ар " > с вложе нными элементам и <area> . Элем ент
управления I mageMap им еет слеДующие свойства
m
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
щелчок мыlШ1
URL
• PostBac k = 2 - при щелчке пользователя
I mage Map
Виртуальное свойство, устанавливающее для
Target HotSpot окно и л и фрейм, КУда се рв е р должен
nриелать отклик на щелчек пользователя.
Приведем пример.
230,51 280,51
зза , Б D
21 4,100 297,100
0,219 177,219
320,241
using System;
using System. Data;
using Sуstе m.Со пfigurаtiоп;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
using System.Collecllons;
using System.Web;
using Sуstеm.WеЬ.Sес шitу;
using System.Web.UI;
using System.Web.UI.WebContro ls;
using System.Web.UI.WebContro ls.WebParts;
using System.Web.UI.HtmJControls;
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
11 Круг
circle = new CircleHotSpotO;
image М ар. Н о tS pots. Add( circ le );
circle.X == 320;
circle.Y:= 241;
circle.Radius := 75;
circle.PostBackValue := ''круг'';
MyImageMap.aspx.cs
- прямоуголышк
-круг
- фон
0, 95 177,95
2Н , 100 297,100
255,129 306,155
205,155
0,219 177,219
320,241
1 2
(0,94) 1-------'-
(1_6--'
2,'-94....:.)t--_ _ _-----i (324,94)
,,,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
usiпg System;
usiпg System.Data;
usiпg Systеm.Со пfigша tiоп;
usiпg System.Collections;
usiпg System. Web;
usiпg System. Web.Security;
usiпg System.Web.UI;
usiпg System. Web.UI. WebControls;
usiпg System. Web. UI. WebControls. WebParts;
usiпg System. Web.UI.HtmlControls;
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Lab e llЫ;
11 Свойств а
public шt Width
(
get { геtшп (int)VIew5tate['Width'1; }
set { View5tate['Width'1:= value; }
}
public шt Height
(
get { геtшп (int)VIеw5tatе[''Неight'']; }
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
public int У
(
get { rеtшп (int)ViewState[''Y'1; )
set { ViewState[''Y'1 = vallle; }
}
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
return str;
}
}
http:!~ocallOst
Равнобедренный треУТОЛЫ-fИК
'"'"
м
2 О
'"
В.М. С""",,,в Про,раммuрова Nue"aASP.NET
~T I@) ГJ ,
С не т'0$ /
- j (
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
,ее
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Create ()
Создают файл
CreateText()
Ореп(), OpenText()
Открывают файл , открывают только для
OpenRead () ,
чтения , открывают только для записи
OpenWrite ()
ReadAllText() Читают весь файл и возвращают его
ReadAllLines(), содержимое в виде строки , массива строк
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Карты сайта
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
,-&J,
"PP 1 ~a ~ ",
-
~
crnf l;JJa>J",
ВJ
~ F I Io ХМ-
illJ
sm.= То"
~
Fi"
~
ROЮ'JC . Fi» SQ.-
ij
Doi"""_
1m
Dазse t -~,
Н"....:Н"..
•
l!IiIII!I
1t!J'
M:tJr:e I'JOO
' ..m
~
\1\5(r"" F,:e
lf..i1
е_ ,
~
J5Cf1' ~ "е
.-
ri='"
Iд fi:.. LI>.ю !IJ cc~," ~
~
,"10 ~
,iJ!I IЭ
",- ф1 jjJ
~W I Web , ' i~
"?'
, • iJ г р """~
, sepзr&е Iе
Г ~~ ' WT""~
КоноультаЦИ\1 (Consuning.aspx)
П оддержка (SuppM .aspx )
Web. si temap
!
Иэan ечение Да н н ых иЗ файла
web.sitemap с помо щью
п остав щ ик а XmlSiteМapP rovider
!
заполнение постав щ ико м
XmISiteMappro . . .ider обьекта
ИСТО Ч НИl(а дан., ы:х
SiteмapDataSOurc.e
!
Эл еме нты уп~anен и я Мenц,
TreeView, SiteMapPath для
генерации НТМL, отобр;э жен l.tЯ
ка рты сайта на стороне клиента
Реализуем эту цепочку ДЛЯ нашего прим ера, в котором ДЛЯ организации
меха ни зма навигации применим мастер-страницы.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
.lJ~
Т""1""»>
Ii ; ,:::
ш!
• _ с_ [!j] 00 !i ~ ..
~
I'lob Form "#М4 КП1..Рogo Wob S• ..,~e С",,, stj i< SCe" t
ccrn-o l
&J
с _,
Ц'Jj
-
~
crnfgJa:I",
~
:>o:M-F,Io X~
h'iJ
Schoma
~
То" Fil2
]j
R о=.л: о Fi'"
.
ij
SQ.- о..:..Ь=
Dазset -~,
flrd iof
i.I1I
5<00 M~
1t!J'
M:tJt:e I'Jeb
' ..m
o'!'l
\1\5(r"" Н е
~
,_ о
~
J5Cfp~ "е
iJ Г Рlio:есWэ r1 "1Нае fi lo
Г Ч>..-t 'wr е
СЛ:eI 11
</script>
</asp:Label>
< Ii>< /Ь >
</С uпепtNоdеТеmрlatе >
</asp:5 iteMa pPath>
</td >
</tr>
Чг>
</asp:Content>
'"
в м С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
.=J
Пример использования
~
карты саита
ffi
I itootNode > ParentNode > Curreni Node -.J
[lI:l в домой Content:PlaceНoldeг -
8 Товары Content:PlaceНokjeг 1
Аппаратура
ПРО'РаАIМЫ
8 Услуги
Обучение
Консультапин
По.ц;а:ержка
r
омой
•
lSlteМapDataSource - SiteM~ataSource 1~
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
1. De f au l t . азр х
2 . Produc t s . asp x
з. Hardware . asp x
4 . So f tware . asp x
5. Services . asp x
б. Train i ng . азр х
7. Consul t i ng . asp x
8 . Suppo rt . азр х
• Г;;:;=Отредактируйте содержимое созданных заготовок страниц
следУЮЩИМ образом
Пр и мерное напол н ен и е страниц содержимо
< /аsр:Сопtепt>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</аsр:Сопtепt>
ее,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</asp:Content>
</asp:Content>
ее,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
~
iI€ Edt View Favaites Tods 1-ie\J
..:-. Back .- ...... о. @J с:! \f\ sea-ch Ш FаVСХites @j rvвia
Программы ентами
8 Услуги
ОбучеЮ!е
Консультации
Под,.цержка KOrf: JЬтацж m экm атации
го Использовать TreeView
r Использовать Menu
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
~
Ie E,jt VI€W Favaites Tods 1-j.Ф
..:-. Back .- ...... о. @J с:! \f\ sea-ch Ш FаVСХltes @j rvвia
Ado::t-ess Il:J http !;'осзhхt 1О3s!WеЬSitеlб!СcпsLiti-q.LpХ
•
~ ~~~~~::~гд
: e
: МЫ
::~::
( B
~ ~
' ~:]
слуш • Обучение с нaпmми
Консультации
r Использовать TreeView
со" Использовать Мепп
ее,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
узлов:
н а пр аво от текущего к
Ю) р невому
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
,ОС
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<tr>
<td colspan=''2'' style=''text-align: center''>
<asp:Label ID="lbrгn:1e " runat= "server" 1>
:
<asp:Label ID="lblDescription" nmat= "server" 1>
</td >
</tr>
<tr>
<td colspan=''2'' style=''text-align: center''>
<asp:LinkButton ID=''lnkPrevious'' runat= "server" Text="< Назад " f;
<asp:LinkButton ID=''lnkNext'' runat= "server" Техt= ' 'Вперед >" 1>
</td >
</tr>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
карты саита
Программы ентзми
о Услуги
ОбучеЮIе
Коnсульmацuи
По,цдержка
r. Использовать TreeView
r Использовать Мепп
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Элемент Описание
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
слева направо
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Страница 4 Страница 5
Computer
Р езул ьтат в ып ол н е ни я П р и ме р а 1
< !DO CТYPE НТМL PUBLIC "- /IWЗС /IDТD НТМL4.01 FгameseUIEN" 'I1n]
<html>
<head >
< titlе>Uпtitled D осumепt </titlе >
< mеы http -еquiv="Со пtе пt-Туре" content=''textlhtml; charset=windows-1251 ">
</head>
Страница 1 Страница 4
Страница 2
Страница 5
Страница 3
Оо,", Computer
де скрипторах <body>
• Г;;:;n одоб н ым же образом создайте страницу с имен ем
Na v i ga te . h tm , содержащую ссы л ки на ст р аницы содержимого,
и за п ол ни те ее следующим кодом
<html>
<head >
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Ada-ess 1.
Навигационная панель
Документ 3
Теперь, когда мы по з нако м или сь с фреймами , на стала пора исп ол ь зов ать
и х в совокупности с картой саЙта. Мы не будем с и л ьно усложн ять
задачу и готовить дл я сс ы лок новы е страницы. Вос п ользуемся
готовыми стр а ница м и , которые ранее о пр едел или в файле Web.sitemap.
Р езул ьтат будет немного н еказисты м, но вполн е пр оиллюстрирует
испол ьз овани е фр еймов .
в п ер вый фрейм, ассо циир уемы й с верхн е й строкой, будет загр ужена
страница TrtlePage.aspx с про стым текстом заголовка. Во второй фрейм
пом естим страницу MenuPage.aspx, в которой будет р асполага ться
элемент TreeV i ew, связанный с файлом Web.sitemap карты саЙта. В
тр етий , именованный фрейм, и знач ал ьно бу,цет загружена го това я
дОЛ1QШ НЯЯ страница, а зат ем БУдУГ подгр уж аться дрyrnе готовые
страницы , выбир аемые поль зователем щелчком на узлах карты саЙ та .
~
Edt Vfew Favoot es TcoIs НеР
.... Back ... ...... 10 Ш ~ Ii3Seach [';J Favootes '1]i' Мeda с,1 ~ ... d ~ ~ .,. о
Ad<:tess 111 http://ocahJst :1035/WebSte 16;fra mesPcqo,aspx 3 .> ", 1
Это затоловок панеJlll Н3ВIff3ЦИИ
•
13 ДОМОЙ
Gi Товары При мер
AmIаратура
Программы использования
13 Услуги
Обучеюrе карты сайта
Консультации
Поддержка Консулыaцrш: Консультaцrш по
эксruryатaцrш
8 Товары страющы
AmIаратура Consulting.aspx,
Програм:мы де мы пров о дим
8 Услуги онсулътации С
Обучеюrе arшши
Консультации ентзмн
Поддержка
r- Использовать TreeView
r Использовать Меnи
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
т
(
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Безопасность
за прос
ПQЛ ЬЮ 8Эт enь
о rp W"l\4 ч еt-t-1 0ГQ
а yr ент ltф.., цмрован
ресурса
Нот
,В
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Сертификаты
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
Аутентификация форм
Выбор этого режима уста нав ливается только в одном еди нственном
месте - конфигурацuонном файле web.config корневого катал ога сайта с
по мощью элемента
и з следУЮще го набора:
Имя cookie-Ha
НТГР для
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
использован и
аугентификац ]
При работе Н е
одном сервер(
н ескольких
n риложения f
задать уникал]
имя для
гарантирован ]
изоляции
Определяет
страницу
ре гистрации
п ользователя
Log in Url log i n . asp x
запросе
защищенной
страницы ( 1(
вход в систем
Время жизни
сооkiе-набора
безоnасн ости
минугах. Если
установлен ре
скользящего
устаревания и
п ериод междУ
соседними
запросами н е
n ревысит это]
Ti meout 30 таймауга , то
ASP.NET обнс
метку времею
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
сооkiе-наборе
если простой
пр евыс ит
установлен ны
таймауг, БУдет
затребова на н
регистрация
п ользователя
Включает реж
скользящего
устаревания с
н абора
безопасн ости .
это м режиме I
Sl i dingExp i ration false устаревания п
будет сбрасыв
если очереднс
пр остой не
пр евыс и т ука ;
п ользователя
Задает уровен
безо п асн ости
сооkiе-наборо
аугентификаЦ I
• None -
шифров
не
подпись
• EncrYl
Protect i on All
- только
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
шифров
• Validc
- только
подпись
• All -
шифров
подпись
При включею
требует перед.
через SSL . Есл
н е активиров;:
RequireSSL false
сервере, то
аугентификаЦ I
форм работап
будет
Разрешает
п ереадреса ЦИ I
междУ
при ложениям
использовани
аугентификаЦ I
EnableCrossAppRedirects false
фоРМ. Оба
при ложения
должны опир.
на одно и то )t
хранилище
удостоверениi
Указывает стр
на которую
направля ется
пользователь
успе llllЮЙ
регистрации,
DefaultUrl default . aspx
он напрямую
запросил стра
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
ре гистра ци и ,
указа нн ую в
Log in Ur l
Может укаЗ Ы Е
хает , в р амка:
кото р о го люб(
Doma i n п усто п р и ложе н ие r-.
и с п ол ьз овать
и те же eookie
н абор ы
П ереч и сле н ные свойства уста н ав л иваются как атр и буг ы доче р него
дескр ип то р а <forms> се кции <a u thent i cat i on mode= " Fo rm s "
/> . Вот п ример и спол ьз ован ия полно го набора этих а тр ибугов в фа йле
web .config
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</authentication>
</system.web>
</сопfigшаtioп>
<!credentials>
<!forms >
<!authentication>
<!system.web>
<!сопfigша tioп>
Упражнение 1
конфигурацuонном файле.
конфигурационный файл
=====----'---.lI~
T..-rР:~"" Гf! ;-;:
•
АЧ'
~
r.ET \',,,,
Sib
Seach Onlre
~
А5Р J-ET W3!J
S Of V tO
ж-sma l
Si.,
~
Sb:."
Vleb
K~
-
Т " Щ' kI'= " ,
=====----.lI~
Т""1"=
f:; ;:;:
~
~
~C
Vleb Fa m
D
МOsR Р,,?,
-= [!j]
c crn-ol
~
~
КТf,\, Р,,?,
j,'jj
~
Web Sf(, t e
~
!'.j
C"'SS
j'jJ [j
с _,
)OJVL F,", Xf,\, 5chotm Т е " Fie Rею:хсе Fle SQ.. C<I:ab.>,.,
ДPP I E'~"
1m ~
-, ~ 11@' i [jJ
00
~
JScrv Fi;'
D,bSot
~.
Siw М"I' М:Ы"I'!ОЬ
~т
\ 'В3c r ipt Fi:g
"-'
111=: ~'
I~ fl:е LSOO tD [~e l'ie~ ~~ I ~atrn
,,\Ji
"'tIrQ$
~ ~ ro ~
~~ Iw,;, , [сП'3
L""",,,,e I~" iJ г р >се "odo 1 ""р" "" filo
Г ~юm>ter=е
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
string[,] authUsers := {
{''userl'', "passwordl "},
{''user2'', "password2 "},
{''usегЗ'', "раsswordЗ "}
};
// ОТСblлаем сообщен ие
IblUsersResult.Text:= ' 'Новые пользователи добавле ны!!! ";
}
</script>
<asp:Button ID ='Ъ tnAdd Usеrs" runat= "selVer" Теxt= "Д обавить "
<р>
<asp:Label ID="lb IUsersResult" гuпаt="sе lVег"></аsр:LаЬеl></р ;;;
</div>
</fonn>
<lbody>
<lhtml>
ю,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
КОДОМ
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Элемент Свойство
Рапеl 10 Maj
BorderColor Si J
BorderStyle Ri(
Te xt Box 10 Us'
RequiredFieldValidator 10 Us'
ControlToValidate Us€
Display Dy!
Не ,
ErrorMessage
пол
Text *
RegularExpressionValidator IO Us'
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ControlToValidate Us'
Display
ErrorMessage Нев
Дог
Тооl Tip
и п,
ValidationExpression [а-
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Text *
TextBox 10 Pa~
TextMode Pa~
RequiredFieldValidator 10 PW(
ControlToValidate Pa~
Display Dy!
ErrorMessage Не :
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Text *
ControlToValidate Pa~
Display
ErrorMessage Нев
Ие"
Тооl Tip
сим
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ValidationE x pression ~: ~
Text *
Button 10 Ви !
Text Отг
Label 10 lbJ
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
MyLogin.aspx I т Х'
~
Введите свои имя и пароль
~
Имя пользователя: r [
~ .
Пароль: r I~
Отправить
IEI
I
lblResult]]
• Е1ТОГ message 1.
• Е1ТОГ message 2.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
str iпg hashed Pwd = FопnsАuthепtiсаtio п . На shP аsswогdF огStо гiпgl пСо пfigFile (
protected void btnН ashed P wd_ Click(o bj ect send er, EventArgs е)
(
// З агрузи ть содерж и мое кор н е в о го Web.config
Сопбgигайоп mуС опбg = Systе m. WеЬ.С опfigша tiоп.
WеЬ С опfigша tiоnМ апаgег.О р е пWеЬСопfiguга tio п("~/' ');
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Отсылаем сообще ни е
IblНashResult.Text := "Хе lШfровани е завер шено . <Ьг /> "
+ 'Пов торно не выполнять - будет хе ш н а хеш!!!";
}
</script>
<asp:Button I D =' Ъ tnН аshе dРwd " nшat="sе lVе г " ОпС liсk =' ЪtnН.
<р>
<asp:Label I D="lb lН a shRe s ult " runat="server"></asp:Label></p>
</div>
</fonn>
</body>
<lhtml>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
>
< сгеdепtials
passwordFormat="MD5''>
< шег name="admin" раsswогd='FАОЗЕВб88АD8ААlDВ59ЗDЗ:
< шег паmе=''петя'' раsswогd="ВБЗ974ЕЗЕЕ7ВО920FЕ24DFВ81
< шег па mе =''в ася '' раsswогd="44D4В2D42Е8ЗОВЕОDD4ЗЕб8З
< шег name=''userl '' раssword="7СБА180ВЗБ89бАОА8СО278ТЕ
< шег name=''user2'' раssword="БСВ75FБ52А9В52798ЕВбСF2~
< шег па mе =''usегЗ'' раssword="819ВОб4ЗDбВ89DС9В579FDFI
<!credentials>
<!forms >
<!а итеппса tioп >
<authorization>
<deny users='?"!>
<!authorization>
<!system.web>
<!сопfigшаtioп>
хеширования паролей
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Labe! message;
// Кнопки
Button createP ersistentCookie = new ButtonO;
center. С о ntro Is. Add( create Р ers istentC 00 kie );
createPersistentCookieText = "Создат ь бессроч ный AuthCookie'
createPersistentCookie.Click += new EventHandler(createPersistent
center.Controls.Add(new НtmlGепегiсСопtгоЧ'Ъг'));
// Отослать на браузер
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
// Сообщить пользователю
message.Text = ''Бессрочный AuthCookie создан!";
}
// Отослать на браузер
tШs. Response .С 00 kies. Add( а итС 00 kie );
// Сообщить пользователю
message.Text = ''Сро чный AuthCookie создан!";
}
// Сообщить пользователю
message.Text = "AuthCookie )'Дален!";
}
</script>
<lhtml>
Favcrites
h~ :/ ~осatюst: 10 34/'N ebSite 20 ;МodfyPerSistentcookieAutll, зsрх
ЗакреIПIТЬ аутентификацию за
броузером
г УдаЛИТ6 AuthCookJe
Local in1Yanet
~~~~
т
j
(
Аутентификация с помощью АР! Membership
регистрации.
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Мы сами можем в ручную создать файл базы да нны х для хр ане ния
удостов ере ний и добави ть в нее табли цы с необходимыми полями. Н о
это может н е стыковаться с API МеmЬегsШр, п оскол ьку он ожидает базу
да нны х определенной структуры. К тому же н ужно БУдет пропи сывать в
конфигурационном файле строку соединени й с этой базой и другие
конфигурационные п араЛ1етры, н еобходимые для работы AP I
МеmЬегsШр. Более п рост ой вариант п редУсмотр ел и разработчики VlSual
Studio 2005, В ЮIючив п одце р жку Ме mЬ егsШр в утили ту Web Site
Administration Тоо! (WАТ). Нам те п ерь вообще ни чего делать н е нужно ,
поскольку база да нны х н ужной структур ы для хран е ни я удосто вере ни й
будет создана автоматически при п е р вом за п ус ке WAT, если в
конфигурационном файле прописана секция аут ентифи кации qюрм .
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
=====----'---.lI~
T..-rР:~"" Гf! ;-;:
•
АЧ'
~
r.ET \',,,,
Sib
Seach Onlre
~
А5Р J-ET W3!J
S Of V tO
ж-sma l
Si.,
~
Vloo
Sb:." K~
-
Т " Щ' kI'= " ,
'"
В.М. СН"""'
""" ' ..",..;;;;;",__..,,~____________~П~,,,~,,;"~
;;"~_
;;;;~
"";,~.;
"~,,,
;, ~.N~'
;,'
,. _ C:\._~' \ _ "
<script nmat="server''>
<body>
< fопn kl="fопnl" runat="server''>
<div>
<Ы >
Стран ица с ограничеННblМ доступом Default.aspx<lhl >
<р>
<aspButton ID="S ignOutAction" runat="server"
Техt='Отменить реrnстрацию" ОпСliсk="SignОutAсtioп_Сliсk" />
<aspHyperLink ID='HyperLinkl" runat= "server"
N avigate Url= "~IМ yDefault.aspx"> На страницу MyDefault.aspx.. .
</aspHyperLink > </р >
</div>
</foпn>
<lbody>
</html>
<script nmat="server''>
ее,
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
<8YH~ . ""'Ь~
......:::::-....';~~::~::::~~"~'~N~';'
<cCC) p~ l ~ t ~on d"Ьuч ="tr u ,," 1>-
~ a u th", n tic~ ~ion .. OO", _ ·~o e.~ · "
dC<l.а iп - · "
~/~ u th~ntlc~tlon ?
~аuth оri 2 аtiою
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</authentication>
<!-- Временно закомментировали, чтобы н е требовал регистр,
<authorization>
<deny users='?"I>
</authorization>
-->
</system. web>
</сопfigшаtioп>
Мы видим, что угилита WAT так долго за п ускал ась пото му, что
добавила к про екту каталог App_Data (если до этого его еще не было) и
создала в нем базу да нны х ASPNETDB . MDF , готовую для хр анения
удостов ере ний и согласованную с API Membership
ASPNEТDB МJF
ее,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
[], ДSPNЕl1ЖМDF
~--- r:з Database Di.зgгаms
е·· ТаЫе:::
НJ ..· ~ aspneCAppkat:ions
$-- b:iJ аsрг.еСМ€mОО-sh!p
~ .. . r:J aspneCP aths
I±J ... Ej аsрnet_Регsоn.зlizаЬonAlIUsегs
НJ- ~ а s рneСРегsоn.з~zаЬon РегUs е г
$-- b:iJ aspr.eCPгofile
~ .. . 1m aspr.eCRoI€s
i±J ... Е3 aspneCSchemaVersionS
@-- b:iJ
~- m:::I aspnet_UsersInRoles
ю·· Е3
aspnet_WebEvent_Events
ffi·· Views
$-- L::1 Stored Procedures
щ- . L::1 Funcbons
ffi·· Sугюпуms
НJ--- Туре.:;
~--- Ез AssembIies
Provider
r. AspNetSqlProvider Test
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ее,
В.М. С""",,,В
А.,
<-B.,J.
МХ."
ASP
EcI\
~
У,,",
..
Fмcr ш
~ :Q
Tcd:s f-I:tJ
[1J Gj , :dSM-сh ~f.v"",,, 13'""w C:f , ~ - Ы
- ---.;....;
i;;I ~ , D
CD h\tp: /Ao<;ohJ,t: 1129/щ), ,-.,twеЬrnпn"'''''СLrI:yIu,,,,,/illJ,,,,, ",,)х
d9I2<I
I Creet~e User
~ Active User
После этого действия новый пользо ватель будет создан в базе данных.
Страница регистрации
,СО
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
<td>
</td >
<td align=''right'' hеight= "4З" style= 'width: lб 7рх">
Имя & пЬ sр;пользователя : </td >
<td>
<asp:TextBox ID='UsernameText" nmat="seIVE
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</td >
<td>
< asp :Req uired F ieldVa lida to r ID= 'U sername Req uired V<
runat= "server" С о ntro ГТо Validate=' U sегnaше Text"
Display=''Dynamic''
ErrorMessage='He заполнено поле ''Имя пользOI
тооrПр='nустое поле ввода"> *
</asp:RequiredFieldValidator>
< asp :RegularExp ressio nValidato r ID= 'U semame Valida I
runat= "server" С о ntro rro Validate= 'U sе гnaше Text"
Display=''Dynamic'' ЕггогМеssаgе=''Неверное имя
ТооГПр="Допустимы буквы , цифры , пробелы и
ValidationExpression="[a- яА- я \w l ]*''> *
</asp:RegularExpressionValidator>
</td >
</tr>
<tr>
<td>
</td >
<td align=''right'' hеight="4З" style= 'width: lб 7рх">
&пЬsр;Пароль:</td >
<td>
<asp:TextBox ID=''PasswordText'' runat="serve
TextMode=''Password'' />
</td >
<td>
<asp:RequiredFieldValidator ID="PwdRequiredValidat(
runat= "server" С о ntro rro Validate= ''Р asswo rdText"
Display=''Dynamic'' ErrorMessage='He запол нено ]
ТооГПр='nустое поле ввода"> *
</asp:RequiredFieldValidator>
<asp:RegularExpressio nValidator ID=''PwdValidator'' n
СО ntro rro Validate= ''Р asswo rdText"
Display=''Dynamic'' ЕггогМеssаgе=''Неверный пар
ТооГПр=''Используются недопустимые симвош
Vаlidа tiоnEхргеssiоп='[а-яА- я \w l !"$&атр;/()= \- 7\
</asp:RegularExpressionValidator>
</td >
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
</tr>
</tabIe>
< а s р:Вuttоп ID =''Вuttопl '' nmat="server" Техt='Отправить "
ОпСliсk= "LоginAс tiоп_ Сliсk" />
</asp:Panel>
<asp:Label ID="lb lResult" nmat= "server" />
</div>
<asp:ValidationSummary ID='ValidationS lll11I1liJryl" nmat= "server" /:
</fonn>
</body>
<lhtml>
При добавле нии новых п ользователей следует иметь ввиду, что имя
пользователя сохраняется в поле UserName реляцион н ой таблицы
aspnet Users и является основой для ф:J р мирован и я п оля Userld
как первиЧИО20 ключа. Поэтом у все пользователи д олжны иметь
уникальн ы е имена.
Х Delete
[iJ Rе1Тesh
lШ!i Properties
использованием АР ! Membership
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
и на се рв е р е .
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Набор неалфавитно
цифр овых символов
ASCII
0123456789
о
1
2
3 ["#$%&'
4()* + . /
5
6 <=>? @
7
8
9 [ \ ] А _
10
11
12 { I } -
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
{
// Вынесли из интерфейсной части из-за большой ширины ш
раsswогdVаlidаtог.ЕпогМеssаgе :=
''Пароль долже н иметь длину не менее 7 символов"
+ "и содержат ь хотя бы один н еалфав и тно -ц ифровой СИМЕ
}
IblResult.Text:= String.Empty;
switch (status)
{
case М embershipC геа te 5 tatus. Dup lica te UserN ате:
IblResultText := "Дублирован н ое и мя пользователя<Ьгf:::
goto default;
case М embershipC геа te 5 tatus. Ргоvid е гЕпо г:
IblResultText := "Ошибка П остав щика <Ьг/> ";
goto default;
default: // Даль ше ле нь анализировать
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
}
}
}
</script>
(
// Расщепить строку на масс ив символов с пустым разделите.
уаг data = args.Va!ue.split('''');
}
}
}
</script>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</td >
</tr>
<tr>
<td>
</td >
<td align=''right'' hеight= "4З" style= 'width: 224рх">
Е- mail:</td>
<td>
<asp:TextBox ID= "email" runat= "server''></asp
</td >
<td>
<asp:RequiredFieldValidator ID="emailRequiredValidat
runat= "server" Controrro Validate="email"
ErrorMessage='He за полнено поле ''E-mail'"
Display="Dynamic''>* </asp:RequiredFieldValidator>
<asp:RegularExpressio nValidator ID="emailValidator" Il
СО ntro rro Validate= "ета П" Епor М essage= ''Н ев ерн 1
ValidationExpression='\ w+([ - +. ']\w +)* @\w+([-.]\w·
Display="Dynamic''> * </asp:RegularExpressionValid;;
</td >
</tr>
<tr>
<td>
</td >
<td align=''right'' hеight="4З" style= 'width: 224рх">
КОНТРОЛЬНblЙ вопрос:</td >
<td>
<asp:TextBox ID="question" nmat="server"></.
</td >
<td>
<asp:RequiredFieldValidator ID="questionRequiredVali
runat= "server" СопиоГГо Validate="q uestion"
ErrorMessage='He за полнено поле ''Ко нтр ольнь
Display="Dynamic''>* </asp:RequiredFieldValidator>
</td >
</tr>
<tr>
ее,
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
<td>
</td >
<td align=''right'' hеight="4З" style='width: 224рх">
КОНТРОЛЬНblЙ OTBeT:</td>
<td>
<asp:TextBox ID="answer" runat="server' '></a ~
</td >
<td>
<asp:RequiredFieldValidator ID="answerRequiredValid
runat= "server" Controrro Validate="answer"
ErrorMessage='He за полнено поле "Ко нтр ольнь
Display=''Dynamic''>*</asp:RequiredFieldValidator>
</td >
</tr>
<tr>
<td colspan="4" align="ce nter">
<asp:Button ID ='Ъ tnAddUsе г" runat="server"
Теxt="Добавить" OnClick="AddUserMemberstllp_
</td >
</tr>
</table>
</asp:Panel>
<asp:Label ID="lb lResult" runat="server" Font- Bold='True"
Fопt-Size=''Lагgе'' ForеСоloг=''Вluе'' />
</div>
<asp:ValidationSummary ID='ValidationS lll11I1liJryl " runat="server" /:
</fonn>
</body>
<lhtml>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
перегрузки :
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
if (checkUser.Checked)
{
// Извл екаем одного пользователя
if (txtUser.Text.Length == О)
{
lblUsersList.Text :::: ''Введ и те имя польз ователя";
геtшп;
try // Попытка
(
string user = Server.HtmlEncode(txtUser.Text);
myUsers:::: new MemberstllpUserCollectionO;
myU sers .Add(M етЬ erstllp. GetU ser( user));
}
catch // Откат
,ее
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
{
IblUsersList.Text :::: ''пользователь не найден";
геtшп;
}
}
.Is.
{
// Извлекаем всех пользователей
myUsers :::: Membersrup.GetAllUsersO;
}
</script>
<td>
<asp:Label ID="lb IUserName" runat="server''></asp:Lab(
</tr>
Чг>
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
</tr>
</tabIe>
</div>
</fопn>
</body>
<lhtml>
'"
"'.'",",~"""."",,"" ASP. N ET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
ользователь: adтin
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP. N ET
поставщика SqlMembershipProvider
• г;.:.='Добавьте новых пользователей с помощью нашей
административной страницы AddUserMembership.aspx
• ~ олучите из страницы GetUsersMembership.aspx копию с
именем GetUsersMyMembe r shipProv i der . asp x,
назначьте ее стартовой и добавьте в интерфейсную часть
те кс товую метку l blPasswo r d для отображения пар оля
• IJ$Добавьте в обработчик события Se l ectedlnde x Changed
строку заполнения метки
IbIPassword.Text == сшгепtUsег.GеtРаsswordО;
• Coтment
• Ema i l
• IsApp r oved
• Las t Activ i tyDate
• Las t LoginDate
'"
В.М. С """,,,в Про,р а ммupoвtJNШ' 110 ASP. N ET
<%@ Page L апguagе= "С #" Епа ы lviеwst аtе= ''fаlsе' ' %>
<%@ lmport N аmеsрасе= "Systеm.WеЬ.Sес шitу" %>
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
UsersGridView.DataBindO;
}
}
</script>
<1h2>
<asp:GridView ID='UsersGridView" гuпаt="sеrvег"
DаtаКеуNашеs='UsегNаme"
AutoGenerateColumns=''False''
О nS е lected lndexC hanged = 'U sersGridView_ S е lected 1ndexC hапgеd '~
< Соlшnns>
< аsр:ВоuпdField DataField="UserN аmе" НеаdегТеxt= ' 'Имя '' 1>
< аsр:ВоuпdField DataField="Email" HeaderText="email" 1>
<asp :ВоuпdField DataField= "СгеаtioпDаtе " НеаdегТехt="С оздан '
< аsр:СоmmaпdFiеk:l SlюwSеlесtВuttоп='Тruе" НеаdегТехt="Дет;:
SеlесtТехt='nоказать" 1>
</Соlшnns>
</asp:GridView>
<h2 >
<asp:Label ID= ''lblUser'' nmat="server"
Техt=''Подробности для выделенного пользователя "
VlSible=''False'' Font· Bold=''true''> </asp:Label>
<1h2>
<table id=''tabIeDetails'' border= "l " bordercolor=''#OOOOFF''
width="lOO%" nmat= "server''>
<tr>
<td width="50%''>
Пользователь: </td >
<td >
'"
В.М. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
'"
в.м. С""",,,в Про,раммupoвtJNШ' 110 ASP.NET
Спиеок литераryры
1. Мэп,ю Mak-ДоналЬД, Марио lllnУШI а, Microsoft ASP.NET 2.0 с примерами на С#
2005 для профессuоналов, М.: 000 " И .Д . Вильяме" , 2006
2. Гле нн Джонеон, Тони Н ор1рОП, Разработка КIIиeHтcKиx веб-прuложенuй на
платформе Microsoft .Net Framework. УчеБНblЙ курс M icrosoft, М.: " Русс кая
редакция", СПб.: " Питер ", 207
""
В_М_ CHeтm. ПfЮ<'Р'НН'ЩЮlШмШ': ма ASPNET
Содержание
Титульная страница 2
Выходные данные 3
Лекция 1. ОСНОВЫ Visua1 Studio 2005 4
Лекция 2. Введение в Web-сайты 26
Лекция 3. Web-формы 62
Лекция 4. Се р верные элеме нты управления 124
Лекция 5. Применение сер верных элемен тов управления 183
Лекция 6. Поль зо вательские элеме нты управления 194
Лекция 7. Многокадровые элеме нты управления 260
Лекция 8. Программирование уровня приложения
308
ASP.NEТ